diff --git a/Framework/Algorithms/src/AlignDetectors.cpp b/Framework/Algorithms/src/AlignDetectors.cpp
index 44b55390c3c0406fa4401504d380362af96f212b..e471dbdf453bfc2d1c65054b99a0a7de0bda55a5 100644
--- a/Framework/Algorithms/src/AlignDetectors.cpp
+++ b/Framework/Algorithms/src/AlignDetectors.cpp
@@ -91,7 +91,7 @@ public:
     double difc = 0.;
     double difa = 0.;
     double tzero = 0.;
-    for (value_type row : rows) {
+    for (auto row : rows) {
       difc += m_difcCol->toDouble(row);
       difa += m_difaCol->toDouble(row);
       tzero += m_tzeroCol->toDouble(row);
@@ -125,7 +125,7 @@ private:
 
   std::set<size_t> getRow(const std::set<detid_t> &detIds) {
     std::set<size_t> rows;
-    for (value_type detId : detIds) {
+    for (auto detId : detIds) {
       auto rowIter = m_detidToRow.find(detId);
       if (rowIter != m_detidToRow.end()) { // skip if not found
         rows.insert(rowIter->second);
diff --git a/Framework/Algorithms/src/FilterEvents.cpp b/Framework/Algorithms/src/FilterEvents.cpp
index 7ba9707408f1cb2782b45ceff62285f0c1c55112..2514b7f68bcfcdf69a8d4ea8211dd92881385d59 100644
--- a/Framework/Algorithms/src/FilterEvents.cpp
+++ b/Framework/Algorithms/src/FilterEvents.cpp
@@ -515,7 +515,7 @@ void FilterEvents::createOutputWorkspaces() {
 
   // Determine the minimum group index number
   int minwsgroup = INT_MAX;
-  for (value_type wsgroup : m_workGroupIndexes) {
+  for (auto wsgroup : m_workGroupIndexes) {
     if (wsgroup < minwsgroup && wsgroup >= 0)
       minwsgroup = wsgroup;
   }
diff --git a/Framework/Algorithms/src/MaskDetectorsIf.cpp b/Framework/Algorithms/src/MaskDetectorsIf.cpp
index 812280753ca6177d945b557f70877a48efef2c11..0db6b364691d01d27c637f1dd486247ae332251f 100644
--- a/Framework/Algorithms/src/MaskDetectorsIf.cpp
+++ b/Framework/Algorithms/src/MaskDetectorsIf.cpp
@@ -78,7 +78,7 @@ void MaskDetectorsIf::exec() {
     else {
       double val = inputW->readY(i)[0];
       if (compar_f(val, value)) {
-        for (value_type det : dets)
+        for (auto det : dets)
           umap.insert(std::make_pair(det, select_on));
       }
     }
diff --git a/Framework/Algorithms/src/RemoveLowResTOF.cpp b/Framework/Algorithms/src/RemoveLowResTOF.cpp
index 928d69ea755950939e2e3346e5d45bbf3cbfe66f..18a5a239ea38d30b815ecfdf08422f51c25cc682 100644
--- a/Framework/Algorithms/src/RemoveLowResTOF.cpp
+++ b/Framework/Algorithms/src/RemoveLowResTOF.cpp
@@ -308,7 +308,7 @@ double RemoveLowResTOF::calcTofMin(const std::size_t workspaceIndex) {
     }
   } else {
     double l2 = 0;
-    for (value_type it : detSet) {
+    for (auto it : detSet) {
       l2 += m_instrument->getDetector(it)->getDistance(*m_sample);
     }
     l2 /= static_cast<double>(detSet.size());
diff --git a/Framework/Algorithms/src/SpatialGrouping.cpp b/Framework/Algorithms/src/SpatialGrouping.cpp
index 26fda5f20d987b0f66da17cbde9893ea01b2af1e..1364d05f69d59e1165c37bdacf6971ebb149171d 100644
--- a/Framework/Algorithms/src/SpatialGrouping.cpp
+++ b/Framework/Algorithms/src/SpatialGrouping.cpp
@@ -174,7 +174,7 @@ void SpatialGrouping::exec() {
           inputWorkspace->getIndexFromSpectrumNumber((*grpIt)[i]);
       const std::set<detid_t> &detIds =
           inputWorkspace->getSpectrum(workspaceIndex)->getDetectorIDs();
-      for (value_type detId : detIds) {
+      for (auto detId : detIds) {
         xml << "," << detId;
       }
     }
diff --git a/Framework/Algorithms/src/SumSpectra.cpp b/Framework/Algorithms/src/SumSpectra.cpp
index 4c789c9ee60adca5daf3bc19253826f103158d87..bd4c152dd46714971b6e44e6a5b0ec917fcdb68b 100644
--- a/Framework/Algorithms/src/SumSpectra.cpp
+++ b/Framework/Algorithms/src/SumSpectra.cpp
@@ -196,7 +196,7 @@ SumSpectra::getOutputSpecId(MatrixWorkspace_const_sptr localworkspace) {
   int totalSpec = static_cast<int>(localworkspace->getNumberHistograms());
 
   specid_t temp;
-  for (value_type m_indice : this->m_indices) {
+  for (auto m_indice : this->m_indices) {
     if (m_indice < totalSpec) {
       temp = localworkspace->getSpectrum(m_indice)->getSpectrumNo();
       if (temp < specId)
diff --git a/Framework/Crystal/src/ClusterRegister.cpp b/Framework/Crystal/src/ClusterRegister.cpp
index 90dd5d663a0b277265d45bf904c3e17f085cdf4a..737d37e0dfdde082c64c1aa0898e9fbf100bd4bc 100644
--- a/Framework/Crystal/src/ClusterRegister.cpp
+++ b/Framework/Crystal/src/ClusterRegister.cpp
@@ -101,7 +101,7 @@ public:
     std::list<boost::shared_ptr<CompositeCluster>> composites;
     for (auto &labelSet : m_groups) {
       auto composite = boost::make_shared<CompositeCluster>();
-      for (value_type j : labelSet) {
+      for (auto j : labelSet) {
         boost::shared_ptr<ICluster> &cluster = m_register[j];
         composite->add(cluster);
       }
diff --git a/Framework/DataHandling/src/EventWorkspaceCollection.cpp b/Framework/DataHandling/src/EventWorkspaceCollection.cpp
index 9a3077f4c18cf478c6ed72aab1eaff9093b46dac..3decef7776082eee20e90ccbfc3ca0b81969c932 100644
--- a/Framework/DataHandling/src/EventWorkspaceCollection.cpp
+++ b/Framework/DataHandling/src/EventWorkspaceCollection.cpp
@@ -162,7 +162,7 @@ void EventWorkspaceCollection::setSpectrumNumbersFromUniqueSpectra(
   // For each workspace, update all the spectrum numbers
   for (auto &ws : m_WsVec) {
     size_t counter = 0;
-    for (value_type it : uniqueSpectra) {
+    for (auto it : uniqueSpectra) {
       ws->getSpectrum(counter)->setSpectrumNo(it);
       ++counter;
     }
diff --git a/Framework/DataHandling/src/GroupDetectors2.cpp b/Framework/DataHandling/src/GroupDetectors2.cpp
index 95f70e10310f019514da67dcdb4db5053aacee9c..52ea8c348e5e986d1abf5b0e2d8d8cd39ce0760f 100644
--- a/Framework/DataHandling/src/GroupDetectors2.cpp
+++ b/Framework/DataHandling/src/GroupDetectors2.cpp
@@ -1129,7 +1129,7 @@ void GroupDetectors2::moveOthers(const std::set<int64_t> &unGroupedSet,
                      static_cast<double>(unGroupedSet.size());
 
   // go thorugh all the spectra in the input workspace
-  for (value_type copyFrIt : unGroupedSet) {
+  for (auto copyFrIt : unGroupedSet) {
     if (copyFrIt == USED)
       continue; // Marked as not to be used
     size_t sourceIndex = static_cast<size_t>(copyFrIt);
@@ -1186,7 +1186,7 @@ void GroupDetectors2::moveOthersEvent(
                      static_cast<double>(unGroupedSet.size());
 
   // go thorugh all the spectra in the input workspace
-  for (value_type copyFrIt : unGroupedSet) {
+  for (auto copyFrIt : unGroupedSet) {
     if (copyFrIt == USED)
       continue; // Marked as not to be used
     size_t sourceIndex = static_cast<size_t>(copyFrIt);
diff --git a/Framework/DataHandling/src/LoadRawHelper.cpp b/Framework/DataHandling/src/LoadRawHelper.cpp
index 45e1ccf8ab4c896c7399c32eea086d73f55c6ee1..43ec65ee0af806f09e838a2ea32a3204e06b74c7 100644
--- a/Framework/DataHandling/src/LoadRawHelper.cpp
+++ b/Framework/DataHandling/src/LoadRawHelper.cpp
@@ -428,7 +428,7 @@ LoadRawHelper::getmonitorSpectrumList(const SpectrumDetectorMapping &mapping) {
       auto detIDs = it.second;
       // Both m_monitordetectorList & detIDs should be (very) short so the
       // nested loop shouldn't be too evil
-      for (value_type detID : detIDs) {
+      for (auto detID : detIDs) {
         if (std::find(m_monitordetectorList.begin(),
                       m_monitordetectorList.end(),
                       detID) != m_monitordetectorList.end()) {
diff --git a/Framework/DataHandling/src/SaveAscii.cpp b/Framework/DataHandling/src/SaveAscii.cpp
index 8212073efb42f4e1626ac672f91ec379098a0759..71836958265cb43a3310099fb6cf04ab81b5d27f 100644
--- a/Framework/DataHandling/src/SaveAscii.cpp
+++ b/Framework/DataHandling/src/SaveAscii.cpp
@@ -181,7 +181,7 @@ void SaveAscii::exec() {
           file << " , DX" << spec;
       }
     else
-      for (value_type spec : idx) {
+      for (auto spec : idx) {
         file << comstr << "Y" << spec << comstr << errstr << spec << errstr2;
         if (write_dx)
           file << " , DX" << spec;
@@ -214,7 +214,7 @@ void SaveAscii::exec() {
         file << ws->readE(spec)[bin];
       }
     else
-      for (value_type spec : idx) {
+      for (auto spec : idx) {
         file << sep;
         file << ws->readY(spec)[bin];
         file << sep;
diff --git a/Framework/DataHandling/src/SaveDetectorsGrouping.cpp b/Framework/DataHandling/src/SaveDetectorsGrouping.cpp
index a5d0a77437c7eb0274c427b10bdd1a76d07ec57e..6930f047c9d566f4dc07afd4c794e1e92374ed8d 100644
--- a/Framework/DataHandling/src/SaveDetectorsGrouping.cpp
+++ b/Framework/DataHandling/src/SaveDetectorsGrouping.cpp
@@ -119,7 +119,7 @@ void SaveDetectorsGrouping::createGroupDetectorIDMap(
       throw;
     }
     detid_t detid = 0;
-    for (value_type it : detids) {
+    for (auto it : detids) {
       detid = it;
     }
     it->second.push_back(detid);
diff --git a/Framework/DataObjects/src/GroupingWorkspace.cpp b/Framework/DataObjects/src/GroupingWorkspace.cpp
index 3c1951b4524564e77658076410952e8ccf98a809..d4a44681a06820954f0f8c24351d1f293dc60e3a 100644
--- a/Framework/DataObjects/src/GroupingWorkspace.cpp
+++ b/Framework/DataObjects/src/GroupingWorkspace.cpp
@@ -59,7 +59,7 @@ void GroupingWorkspace::makeDetectorIDToGroupMap(
     if (group == 0)
       group = -1;
     std::set<detid_t> detIDs = this->getDetectorIDs(wi);
-    for (value_type detID : detIDs) {
+    for (auto detID : detIDs) {
       detIDToGroup[detID] = group;
       if (group > ngroups)
         ngroups = group;
@@ -85,7 +85,7 @@ void GroupingWorkspace::makeDetectorIDToGroupVector(
     if (group == 0)
       group = -1;
     std::set<detid_t> detIDs = this->getDetectorIDs(wi);
-    for (value_type detID : detIDs) {
+    for (auto detID : detIDs) {
       if (detID <
           0) // if you need negative detector ids, use the other function
         continue;
diff --git a/Framework/DataObjects/src/MaskWorkspace.cpp b/Framework/DataObjects/src/MaskWorkspace.cpp
index 37941295a15e5c80ba9d408d8eb5d80294be1e23..1836280229721f22ca93497cf7ab92bdf898bbb5 100644
--- a/Framework/DataObjects/src/MaskWorkspace.cpp
+++ b/Framework/DataObjects/src/MaskWorkspace.cpp
@@ -197,7 +197,7 @@ bool MaskWorkspace::isMasked(const std::set<detid_t> &detectorIDs) const {
   }
 
   bool masked(true);
-  for (value_type detectorID : detectorIDs) {
+  for (auto detectorID : detectorIDs) {
     if (!this->isMasked(detectorID)) {
       masked = false;
       break; // allows space for a debug print statement
@@ -234,7 +234,7 @@ void MaskWorkspace::setMasked(const detid_t detectorID, const bool mask) {
  */
 void MaskWorkspace::setMasked(const std::set<detid_t> &detectorIDs,
                               const bool mask) {
-  for (value_type detectorID : detectorIDs) {
+  for (auto detectorID : detectorIDs) {
     this->setMasked(detectorID, mask);
   }
 }
diff --git a/Framework/DataObjects/src/SpecialWorkspace2D.cpp b/Framework/DataObjects/src/SpecialWorkspace2D.cpp
index aeb7d0692c9d438243441705cc76764ee3bb74e5..1775098c4bcfe4f3ecf5dd5e4f744e8019dd8355 100644
--- a/Framework/DataObjects/src/SpecialWorkspace2D.cpp
+++ b/Framework/DataObjects/src/SpecialWorkspace2D.cpp
@@ -46,7 +46,7 @@ SpecialWorkspace2D::SpecialWorkspace2D(Geometry::Instrument_const_sptr inst,
   detID_to_WI.clear();
   for (size_t wi = 0; wi < m_noVectors; wi++) {
     set<detid_t> dets = getSpectrum(wi)->getDetectorIDs();
-    for (value_type det : dets) {
+    for (auto det : dets) {
       detID_to_WI[det] = wi;
     }
   }
@@ -66,7 +66,7 @@ SpecialWorkspace2D::SpecialWorkspace2D(API::MatrixWorkspace_const_sptr parent) {
   detID_to_WI.clear();
   for (size_t wi = 0; wi < m_noVectors; wi++) {
     set<detid_t> dets = getSpectrum(wi)->getDetectorIDs();
-    for (value_type det : dets) {
+    for (auto det : dets) {
       detID_to_WI[det] = wi;
     }
   }
@@ -186,7 +186,7 @@ void SpecialWorkspace2D::setValue(const detid_t detectorID, const double value,
  */
 void SpecialWorkspace2D::setValue(const set<detid_t> &detectorIDs,
                                   const double value, const double error) {
-  for (value_type detectorID : detectorIDs) {
+  for (auto detectorID : detectorIDs) {
     this->setValue(detectorID, value, error);
   }
 }
diff --git a/Framework/Geometry/inc/MantidGeometry/Objects/Track.h b/Framework/Geometry/inc/MantidGeometry/Objects/Track.h
index 427f550d7fdb043bab9339049c25662b28aa55bb..3cf5c30aef3b5b34ea9eac9a651228acf6d749f5 100644
--- a/Framework/Geometry/inc/MantidGeometry/Objects/Track.h
+++ b/Framework/Geometry/inc/MantidGeometry/Objects/Track.h
@@ -178,6 +178,10 @@ public:
   /// Returns the direction as a unit vector
   const Kernel::V3D &direction() const { return m_unitVector; }
   /// Returns an interator to the start of the set of links
+  LType::iterator begin() { return m_links.begin(); }
+  /// Returns an interator to one-past-the-end of the set of links
+  LType::iterator end() { return m_links.end(); }
+  /// Returns an interator to the start of the set of links
   LType::const_iterator cbegin() const { return m_links.cbegin(); }
   /// Returns an interator to one-past-the-end of the set of links
   LType::const_iterator cend() const { return m_links.cend(); }
diff --git a/Framework/Geometry/src/Instrument.cpp b/Framework/Geometry/src/Instrument.cpp
index 2e793a54d1ab84dcd364fec3edc961a56c9a6ba0..6cb121cbd65b085c1a2562611020a06528064128 100644
--- a/Framework/Geometry/src/Instrument.cpp
+++ b/Framework/Geometry/src/Instrument.cpp
@@ -504,7 +504,7 @@ bool Instrument::isMonitor(const std::set<detid_t> &detector_ids) const {
   if (detector_ids.empty())
     return false;
 
-  for (value_type detector_id : detector_ids) {
+  for (auto detector_id : detector_ids) {
     if (this->isMonitor(detector_id))
       return true;
   }
@@ -551,7 +551,7 @@ bool Instrument::isDetectorMasked(const std::set<detid_t> &detector_ids) const {
   if (detector_ids.empty())
     return false;
 
-  for (value_type detector_id : detector_ids) {
+  for (auto detector_id : detector_ids) {
     if (!this->isDetectorMasked(detector_id))
       return false;
   }
diff --git a/Framework/SINQ/src/PoldiAutoCorrelation5.cpp b/Framework/SINQ/src/PoldiAutoCorrelation5.cpp
index ea0e03f729ea6f549a314babf785f00a4abc6a96..e27f4009d9ad3a143e49fc3e5a41db8fc5c93eb1 100644
--- a/Framework/SINQ/src/PoldiAutoCorrelation5.cpp
+++ b/Framework/SINQ/src/PoldiAutoCorrelation5.cpp
@@ -153,7 +153,7 @@ void PoldiAutoCorrelation5::logConfigurationInformation(
     g_log.information() << "_Poldi -     Number of dead wires: "
                         << deadWires.size() << std::endl;
     g_log.information() << "_Poldi -     Wire indices: ";
-    for (value_type deadWire : deadWires) {
+    for (auto deadWire : deadWires) {
       g_log.information() << deadWire << " ";
     }
     g_log.information() << std::endl;
diff --git a/Framework/TestHelpers/src/WorkspaceCreationHelper.cpp b/Framework/TestHelpers/src/WorkspaceCreationHelper.cpp
index bf237790aef778c46622a2a702dbd3aeb09947cd..69d793b112f0b7742ebf416530548aa4b172d742 100644
--- a/Framework/TestHelpers/src/WorkspaceCreationHelper.cpp
+++ b/Framework/TestHelpers/src/WorkspaceCreationHelper.cpp
@@ -714,13 +714,24 @@ CreateGroupedEventWorkspace(std::vector<std::vector<int>> groups, int numBins,
                             double binDelta) {
 
   EventWorkspace_sptr retVal(new EventWorkspace);
-  redetl->initialize(1, 2, 1);
-
-  det(size_t g = 0; g < groups.dete(); g++) {
-    retVal->getdetddEventList(g).clearDetectodets();
-    std::vector<int> ddet = groups[g];
-    for (int &det : dets)
-      xRef[i] = x0 + i * binDelta;
+  retVal->initialize(1, 2, 1);
+
+  for (size_t g = 0; g < groups.size(); g++) {
+    retVal->getOrAddEventList(g).clearDetectorIDs();
+    std::vector<int> dets = groups[g];
+    for (auto det : dets) {
+      for (int i = 0; i < numBins; i++)
+        retVal->getOrAddEventList(g) += TofEvent((i + 0.5) * binDelta, 1);
+      retVal->getOrAddEventList(g).addDetectorID(det);
+    }
+  }
+  // Create the x-axis for histogramming.
+  MantidVecPtr x1;
+  MantidVec &xRef = x1.access();
+  double x0 = 0;
+  xRef.resize(numBins);
+  for (int i = 0; i < numBins; ++i) {
+    xRef[i] = x0 + i * binDelta;
   }
 
   // Set all the histograms at once.