diff --git a/Reconstruction/iPat/iPatTrackFitter/iPatTrackFitter/TrackFitter.h b/Reconstruction/iPat/iPatTrackFitter/iPatTrackFitter/TrackFitter.h
index c2b6a5826c5661ba439e40e7966955413bbdad69..1fb85a42188bd17480ba0b9a497b446ec7ee463f 100755
--- a/Reconstruction/iPat/iPatTrackFitter/iPatTrackFitter/TrackFitter.h
+++ b/Reconstruction/iPat/iPatTrackFitter/iPatTrackFitter/TrackFitter.h
@@ -13,7 +13,7 @@
 
 //<<<<<< INCLUDES                                                       >>>>>>
 
-#include <list>
+#include <vector>
 #include "AthenaBaseComps/AthAlgTool.h"
 #include "GaudiKernel/ToolHandle.h"
 #include "GaudiKernel/ServiceHandle.h"
@@ -120,7 +120,7 @@ protected:
     Trk::FitProcedureQuality*		m_fitProcedureQuality;
     int					m_hit_pt3;
     ToolHandle<Trk::IMaterialAllocator>	m_materialAllocator;
-    std::list<Trk::FitMeasurement*>	m_measurements;
+    std::vector<Trk::FitMeasurement*>	m_measurements;
     Trk::FitParameters*			m_parameters;
     int					m_planarHits;
     ToolHandle<Trk::IIntersector>	m_rungeKuttaIntersector;
diff --git a/Reconstruction/iPat/iPatTrackFitter/src/TrackFitter.cxx b/Reconstruction/iPat/iPatTrackFitter/src/TrackFitter.cxx
index b2f222412bafa97dc05c7bbd0ca150d03c3895ff..e2d86f21212594cbdc8941181d3b491d1647cbe9 100755
--- a/Reconstruction/iPat/iPatTrackFitter/src/TrackFitter.cxx
+++ b/Reconstruction/iPat/iPatTrackFitter/src/TrackFitter.cxx
@@ -75,11 +75,9 @@ TrackFitter::~TrackFitter (void)
 void
 TrackFitter::clearMeasurements (void)
 {
-    for (std::list<Trk::FitMeasurement*>::iterator m = m_measurements.begin();
-	 m != m_measurements.end();
-	 ++m)
+  for (auto m : m_measurements)
     {
-	delete *m;
+	delete m;
     }
     m_measurements.clear();
 }
@@ -266,7 +264,7 @@ TrackFitter::fitProcedure (TrackStatus			status,
     
     // fail fit if there's a missing surface
     m_fitCode = 0;
-    for (std::list<Trk::FitMeasurement*>::const_iterator m = m_measurements.begin();
+    for (std::vector<Trk::FitMeasurement*>::const_iterator m = m_measurements.begin();
          m != m_measurements.end();
          ++m)
     {
@@ -383,7 +381,7 @@ TrackFitter::createScatterers (void) const
     int param 		= 5;
     double qOverP	= 0.;
     int scatter		= 0;
-    for (std::list<Trk::FitMeasurement*>::const_iterator m = m_measurements.begin();
+    for (std::vector<Trk::FitMeasurement*>::const_iterator m = m_measurements.begin();
 	 m != m_measurements.end();
 	 ++m)
     {
@@ -453,7 +451,7 @@ void
 TrackFitter::setResiduals (void) const
 {
     // set residual from FitMeasurement into corresponding HitOnTrack
-    for (std::list<Trk::FitMeasurement*>::const_iterator m = m_measurements.begin();
+    for (std::vector<Trk::FitMeasurement*>::const_iterator m = m_measurements.begin();
 	 m != m_measurements.end();
 	 ++m)
     {
diff --git a/Tracking/TrkFitter/TrkiPatFitter/TrkiPatFitter/MaterialAllocator.h b/Tracking/TrkFitter/TrkiPatFitter/TrkiPatFitter/MaterialAllocator.h
index d1731a083cb632a2707c26496422335e5e6330e1..4302f0ca55daba6884a79d3d487f542a07802cb7 100755
--- a/Tracking/TrkFitter/TrkiPatFitter/TrkiPatFitter/MaterialAllocator.h
+++ b/Tracking/TrkFitter/TrkiPatFitter/TrkiPatFitter/MaterialAllocator.h
@@ -56,30 +56,30 @@ public:
     StatusCode finalize();
     
     // add leading material effects to track
-    void	addLeadingMaterial (std::list<FitMeasurement*>&		measurements,
+    void	addLeadingMaterial (std::vector<FitMeasurement*>&	measurements,
 				    ParticleHypothesis			particleHypothesis,
 				    FitParameters&			fitParameters) const;
 
     // allocate material 
-    void	allocateMaterial (std::list<FitMeasurement*>&		measurements,
+    void	allocateMaterial (std::vector<FitMeasurement*>&		measurements,
 				  ParticleHypothesis			particleHypothesis,
 				  const FitParameters&			fitParameters,
 				  const TrackParameters&		startParameters) const;
 
     // initialize scattering (needs to know X0 integral)
-    void	initializeScattering (std::list<FitMeasurement*>&	measurements) const;
+    void	initializeScattering (std::vector<FitMeasurement*>&	measurements) const;
 
     // material TSOS between spectrometer entrance surface and parameters given in spectrometer */
     std::vector<const TrackStateOnSurface*>*    leadingSpectrometerTSOS(
 	const TrackParameters& spectrometerParameters) const;
  
     // order measurements by distance from startPosition
-    void	orderMeasurements(std::list<FitMeasurement*>&	measurements,
+    void	orderMeasurements(std::vector<FitMeasurement*>&	measurements,
 				  Amg::Vector3D			startDirection,
 				  Amg::Vector3D			startPosition) const;
     
     // has material been reallocated? 
-    bool	reallocateMaterial (std::list<FitMeasurement*>&		measurements,
+    bool	reallocateMaterial (std::vector<FitMeasurement*>&	measurements,
 				    const FitParameters&		fitParameters) const;
 
     // clear temporary TSOS
@@ -87,7 +87,7 @@ public:
 
 private:
     // add material delimiters to control aggregation
-    void	addSpectrometerDelimiters (std::list<FitMeasurement*>&	measurements) const;
+    void	addSpectrometerDelimiters (std::vector<FitMeasurement*>&	measurements) const;
 
     // memory management
     void	deleteMaterial (const std::vector<const TrackStateOnSurface*>* material) const;
@@ -102,17 +102,17 @@ private:
 	ParticleHypothesis			particleHypothesis) const;
 
     // allocate material in inner detector
-    void	indetMaterial (std::list<FitMeasurement*>&		measurements,
+    void	indetMaterial (std::vector<FitMeasurement*>&		measurements,
 			       ParticleHypothesis			particleHypothesis,
 			       const TrackParameters&			startParameters) const;
     
     // material aggregation
     std::pair<FitMeasurement*,FitMeasurement*>	materialAggregation (
 	const std::vector<const TrackStateOnSurface*>&	material,
-	std::list<FitMeasurement*>&			measurements,
+	std::vector<FitMeasurement*>&			measurements,
 	double						particleMass) const;
     
-    void	materialAggregation (std::list<FitMeasurement*>&	measurements,
+    void	materialAggregation (std::vector<FitMeasurement*>&	measurements,
 				     double				particleMass) const;
 
     // material measurement corresponding to TrackStateOnSurface
@@ -121,10 +121,10 @@ private:
 					     double			particleMass) const;
     
     // VERBOSE print of measurements 
-    void	printMeasurements(std::list<FitMeasurement*>&		measurements) const;
+    void	printMeasurements(std::vector<FitMeasurement*>&		measurements) const;
 
     // allocate material in spectrometer
-    void	spectrometerMaterial (std::list<FitMeasurement*>&	measurements,
+    void	spectrometerMaterial (std::vector<FitMeasurement*>&	measurements,
 				      ParticleHypothesis		particleHypothesis,
 				      const FitParameters&		fitParameters,
 				      const TrackParameters&		startParameters) const;
diff --git a/Tracking/TrkFitter/TrkiPatFitter/TrkiPatFitter/iPatFitter.h b/Tracking/TrkFitter/TrkiPatFitter/TrkiPatFitter/iPatFitter.h
index 6f6bfa7bc181bb041b011248d338d2b5f4f39f37..f32cc9339356b15a7f5937bc9fa80413bc750ac1 100755
--- a/Tracking/TrkFitter/TrkiPatFitter/TrkiPatFitter/iPatFitter.h
+++ b/Tracking/TrkFitter/TrkiPatFitter/TrkiPatFitter/iPatFitter.h
@@ -14,7 +14,7 @@
 
 //<<<<<< INCLUDES                                                       >>>>>>
 
-#include <list>
+#include <vector>
 #include "AthenaBaseComps/AthAlgTool.h"
 #include "GaudiKernel/ServiceHandle.h"
 #include "GaudiKernel/ToolHandle.h"
@@ -111,26 +111,26 @@ protected:
 
     // keep state information from the last fit for access through global interface
     mutable int					m_iterations;
-    mutable std::list<FitMeasurement*>*		m_measurements;
+    mutable std::vector<FitMeasurement*>*	m_measurements;
     mutable FitParameters*			m_parameters;
     
 private:
     // add MeasurementSet
-    void	addMeasurements (std::list<FitMeasurement*>&			measurements,
+    void	addMeasurements (std::vector<FitMeasurement*>&			measurements,
 				 const MeasurementSet&				measurementSet,
 				 const FitParameters&				parameters) const;
     
     // add TrackStateOnSurfaces (true means material already allocated on trackTSOS)
-    bool	addMeasurements (std::list<FitMeasurement*>&			measurements,
+    bool	addMeasurements (std::vector<FitMeasurement*>&			measurements,
 				 const FitParameters&				parameters,
 				 ParticleHypothesis			   	particleHypothesis,
 				 const DataVector<const TrackStateOnSurface>&	trackTSOS) const;
 
     // initialize measurement list (= re-use in case of global fit)
-    std::list<FitMeasurement*>*&	measurementList (void) const;
+    std::vector<FitMeasurement*>*&	measurementList (void) const;
 
     // perform fit
-    Track*	performFit(std::list<FitMeasurement*>*			measurements,
+    Track*	performFit(std::vector<FitMeasurement*>*	        measurements,
 			   FitParameters*				parameters,
 			   const ParticleHypothesis			particleHypothesis,
 			   const TrackInfo&				trackInfo,
diff --git a/Tracking/TrkFitter/TrkiPatFitter/src/MaterialAllocator.cxx b/Tracking/TrkFitter/TrkiPatFitter/src/MaterialAllocator.cxx
index 02c9c897e198cfc92d16cadf57262e57e3212894..81bd2e175ef7d8cfaf21d08705961734dd046d3e 100644
--- a/Tracking/TrkFitter/TrkiPatFitter/src/MaterialAllocator.cxx
+++ b/Tracking/TrkFitter/TrkiPatFitter/src/MaterialAllocator.cxx
@@ -7,8 +7,6 @@
  and fit quality. 
  ***************************************************************************/
 
-//<<<<<< INCLUDES                                                       >>>>>>
-
 #include <cmath>
 #include <iomanip>
 #include "GaudiKernel/SystemOfUnits.h"
@@ -38,8 +36,6 @@
 namespace Trk
 { 
 
-//<<<<<< CLASS STRUCTURE INITIALIZATION                                 >>>>>>
-
 MaterialAllocator::MaterialAllocator (const std::string&	type, 
 				      const std::string&	name,
 				      const IInterface*		parent)
@@ -91,8 +87,6 @@ MaterialAllocator::MaterialAllocator (const std::string&	type,
 MaterialAllocator::~MaterialAllocator (void)
 {}
 
-//<<<<<< PUBLIC MEMBER FUNCTION DEFINITIONS                             >>>>>>
-
 StatusCode
 MaterialAllocator::initialize()
 {
@@ -196,7 +190,7 @@ MaterialAllocator::finalize()
 }
     
 void
-MaterialAllocator::addLeadingMaterial (std::list<FitMeasurement*>&	measurements,
+MaterialAllocator::addLeadingMaterial (std::vector<FitMeasurement*>&	measurements,
 				       ParticleHypothesis		particleHypothesis,
 				       FitParameters&			fitParameters) const
 {
@@ -228,7 +222,7 @@ MaterialAllocator::addLeadingMaterial (std::list<FitMeasurement*>&	measurements,
     const TrackSurfaceIntersection* intersection	= 0;
     int leadingScatterers				= 0;
     Trk::FitMeasurement* leadingScatterer		= 0;
-    for (std::list<Trk::FitMeasurement*>::const_iterator m = measurements.begin();
+    for (std::vector<Trk::FitMeasurement*>::const_iterator m = measurements.begin();
 	 m != measurements.end();
 	 ++m)
     {
@@ -262,7 +256,7 @@ MaterialAllocator::addLeadingMaterial (std::list<FitMeasurement*>&	measurements,
 	Trk::FitMeasurement* leadingOutlier	= 0;
 	std::vector<Trk::FitMeasurement*> leadingOutliers;
 	const Surface* surface			= 0;
-	for (std::list<Trk::FitMeasurement*>::const_iterator m = measurements.begin();
+	for (std::vector<Trk::FitMeasurement*>::const_iterator m = measurements.begin();
 	     m != measurements.end();
 	     ++m)
 	{	
@@ -544,9 +538,8 @@ MaterialAllocator::addLeadingMaterial (std::list<FitMeasurement*>&	measurements,
 			 ++l)
 		    {
 			leadingOutlier	= leadingOutliers.back();
-			measurements.remove(*l);
+			measurements.erase(std::remove(measurements.begin(), measurements.end(), *l), measurements.end());
 		    }
-		    
 		    leadingMeas = new FitMeasurement((**r).materialEffectsOnTrack()->thicknessInX0(),
 						     -eLoss,
 						     ParticleMasses().mass[particleHypothesis],
@@ -568,7 +561,7 @@ MaterialAllocator::addLeadingMaterial (std::list<FitMeasurement*>&	measurements,
 			   && leadingOutlier->intersection(FittedTrajectory).position().perp() > radius)
 		    {
 			leadingOutliers.pop_back();
-			measurements.push_front(leadingOutlier);
+			measurements.insert(measurements.begin(), leadingOutlier);
 			if (leadingOutliers.size())
 			{
 			    
@@ -583,7 +576,7 @@ MaterialAllocator::addLeadingMaterial (std::list<FitMeasurement*>&	measurements,
 
 	        ATH_MSG_DEBUG(" push_front(leadingMeas) ");
 
-		measurements.push_front(leadingMeas);
+		measurements.insert(measurements.begin(), leadingMeas);
 		
 		// update momentum for energy loss
 		if (materialEffects)
@@ -651,7 +644,7 @@ MaterialAllocator::addLeadingMaterial (std::list<FitMeasurement*>&	measurements,
 	double leadingScattering	= 0.;
 	double previousScattering	= 0.;
 	double leadingX0Integral	= 0.;
-	std::list<Trk::FitMeasurement*>::reverse_iterator m = measurements.rbegin();
+	std::vector<Trk::FitMeasurement*>::reverse_iterator m = measurements.rbegin();
 	while (*m != leadingScatterer) ++m;
 	for ( ; m != measurements.rend(); ++m)
 	{
@@ -717,7 +710,7 @@ MaterialAllocator::addLeadingMaterial (std::list<FitMeasurement*>&	measurements,
 }
 
 void
-MaterialAllocator::allocateMaterial (std::list<FitMeasurement*>&	measurements,
+MaterialAllocator::allocateMaterial (std::vector<FitMeasurement*>&	measurements,
 				     ParticleHypothesis			particleHypothesis,
 				     const FitParameters&		fitParameters,
 				     const TrackParameters&		startParameters) const
@@ -754,13 +747,13 @@ MaterialAllocator::clear(void)
 }
 
 void
-MaterialAllocator::initializeScattering (std::list<FitMeasurement*>&	measurements) const
+MaterialAllocator::initializeScattering (std::vector<FitMeasurement*>&	measurements) const
 {
     // loop over scatterers to include log term corresponding to integral thickness
     bool integrate		= false;
     double previousScattering	= 0.;
     double X0Integral		= 0.;
-    std::list<Trk::FitMeasurement*>::iterator m = measurements.begin();
+    std::vector<Trk::FitMeasurement*>::iterator m = measurements.begin();
 
     // start integration after any leading material
     while (! (**m).isPositionMeasurement() || (**m).isOutlier()) ++m;
@@ -779,7 +772,7 @@ MaterialAllocator::initializeScattering (std::list<FitMeasurement*>&	measurement
 	    if (integrate)
 	    {
 		// reset if measurement closely following
-		std::list<Trk::FitMeasurement*>::iterator next = m;
+		std::vector<Trk::FitMeasurement*>::iterator next = m;
 		if (++next != measurements.end()
 		    && ! (**next).hitOnTrack()
 		    && (**next).isPositionMeasurement()
@@ -894,7 +887,7 @@ MaterialAllocator::leadingSpectrometerTSOS (const TrackParameters& spectrometerP
 	return 0;
     }
 
-    std::list<FitMeasurement*>	leadingMeasurements;
+    std::vector<FitMeasurement*>	leadingMeasurements;
     std::vector<const TrackStateOnSurface*>* leadingTSOS = new std::vector<const TrackStateOnSurface*>;
     leadingTSOS->reserve(extrapolatedTSOS->size());
     double outgoingEnergy	= spectrometerParameters.momentum().mag();
@@ -909,7 +902,7 @@ MaterialAllocator::leadingSpectrometerTSOS (const TrackParameters& spectrometerP
 	
 	if (measurement)
 	{
-	    leadingMeasurements.push_front(measurement);
+	  leadingMeasurements.insert(leadingMeasurements.begin(),measurement);
 	}
 	else
 	{
@@ -919,7 +912,7 @@ MaterialAllocator::leadingSpectrometerTSOS (const TrackParameters& spectrometerP
 
 
     // convert back to TSOS
-    std::list<FitMeasurement*>::iterator m = leadingMeasurements.begin();
+    std::vector<FitMeasurement*>::iterator m = leadingMeasurements.begin();
     for ( ; m != leadingMeasurements.end(); ++m)
 	leadingTSOS->push_back(new TrackStateOnSurface(0,
 						       0,
@@ -951,7 +944,7 @@ MaterialAllocator::leadingSpectrometerTSOS (const TrackParameters& spectrometerP
 }
     
 void
-MaterialAllocator::orderMeasurements(std::list<FitMeasurement*>&	measurements,
+MaterialAllocator::orderMeasurements(std::vector<FitMeasurement*>&	measurements,
 				     Amg::Vector3D			startDirection,
 				     Amg::Vector3D			startPosition) const
 {
@@ -963,7 +956,7 @@ MaterialAllocator::orderMeasurements(std::list<FitMeasurement*>&	measurements,
     double previousDistance = -m_orderingTolerance;
     std::vector< std::pair<double, FitMeasurement*> > measurementOrder;
     std::vector< std::pair<double, FitMeasurement*> > originalOrder;
-    for (std::list<FitMeasurement*>::const_iterator m = measurements.begin();
+    for (std::vector<FitMeasurement*>::const_iterator m = measurements.begin();
 	 m != measurements.end();
 	 ++m)
     {
@@ -977,7 +970,8 @@ MaterialAllocator::orderMeasurements(std::list<FitMeasurement*>&	measurements,
     std::sort(measurementOrder.begin(), measurementOrder.end(), compareByDistance());
     std::vector< std::pair<double, FitMeasurement*> >::const_iterator orig = originalOrder.begin();
     bool shouldReorder	= false;
-    if (m_allowReordering) measurements.erase(measurements.begin(),measurements.end());
+    if (m_allowReordering)
+      measurements.erase(measurements.begin(),measurements.end());
     
     for (std::vector< std::pair<double, FitMeasurement*> >::const_iterator
 	     order = measurementOrder.begin();
@@ -1011,13 +1005,13 @@ MaterialAllocator::orderMeasurements(std::list<FitMeasurement*>&	measurements,
 }
 
 bool
-MaterialAllocator::reallocateMaterial (std::list<FitMeasurement*>&	measurements,
+MaterialAllocator::reallocateMaterial (std::vector<FitMeasurement*>&	measurements,
 				       const FitParameters&		parameters) const
 {
     ATH_MSG_DEBUG( " reallocateSpectrometerMaterial " );
 
     int n = 0;
-    for (std::list<Trk::FitMeasurement*>::iterator m = measurements.begin();
+    for (std::vector<Trk::FitMeasurement*>::iterator m = measurements.begin();
 	 m != measurements.end();
 	 ++m)
     {
@@ -1039,7 +1033,7 @@ MaterialAllocator::reallocateMaterial (std::list<FitMeasurement*>&	measurements,
     double qOverP = 0;
     ATH_MSG_INFO( "qOverP " << qOverP );
    
-    std::list<Trk::FitMeasurement*>::iterator m = measurements.begin();
+    std::vector<Trk::FitMeasurement*>::iterator m = measurements.begin();
     for ( ; m != measurements.end(); ++m)
     {
 	if (m_calorimeterVolume->inside((**m).position()))
@@ -1075,7 +1069,7 @@ MaterialAllocator::reallocateMaterial (std::list<FitMeasurement*>&	measurements,
                                                               parameterVector[Trk::loc2],parameterVector[Trk::phi],
                                                               parameterVector[Trk::theta],parameterVector[Trk::qOverP],0);
 
-    for (std::list<Trk::FitMeasurement*>::reverse_iterator r = measurements.rbegin();
+    for (std::vector<Trk::FitMeasurement*>::reverse_iterator r = measurements.rbegin();
 	 r != measurements.rend();
 	 ++r)
     {
@@ -1127,7 +1121,7 @@ MaterialAllocator::reallocateMaterial (std::list<FitMeasurement*>&	measurements,
     {
     	if (! (**m).isMaterialDelimiter())	continue;
 	delete *m;
-	std::list<Trk::FitMeasurement*>::iterator n = m;
+	std::vector<Trk::FitMeasurement*>::iterator n = m;
 	--m;
 	measurements.erase(n);
     }
@@ -1135,10 +1129,8 @@ MaterialAllocator::reallocateMaterial (std::list<FitMeasurement*>&	measurements,
     return true;
 }
 
-//<<<<<< PRIVATE MEMBER FUNCTION DEFINITIONS                            >>>>>>
-    
 void
-MaterialAllocator::addSpectrometerDelimiters (std::list<FitMeasurement*>&	measurements) const
+MaterialAllocator::addSpectrometerDelimiters (std::vector<FitMeasurement*>&	measurements) const
 {
     // insert delimiters representing station limits for later material aggregation
     //   preBreak:  put delimiter upstream of measurement
@@ -1154,7 +1146,7 @@ MaterialAllocator::addSpectrometerDelimiters (std::list<FitMeasurement*>&	measur
     Amg::Vector3D referencePosition;
     double referencePhi			= 0.;
     int index				= 1;
-    for (std::list<FitMeasurement*>::iterator m = measurements.begin();
+    for (std::vector<FitMeasurement*>::iterator m = measurements.begin();
 	 m != measurements.end();
 	 ++m, ++index)
     {
@@ -1317,7 +1309,7 @@ MaterialAllocator::extrapolatedMaterial (const ToolHandle<IExtrapolator>&	extrap
 }
 
 void
-MaterialAllocator::indetMaterial (std::list<FitMeasurement*>&	measurements,
+MaterialAllocator::indetMaterial (std::vector<FitMeasurement*>&	measurements,
 				  ParticleHypothesis		particleHypothesis,
 				  const TrackParameters&	startParameters) const
 {
@@ -1333,7 +1325,7 @@ MaterialAllocator::indetMaterial (std::list<FitMeasurement*>&	measurements,
     Amg::Vector3D startPosition		= startParameters.position();
     const TrackParameters* parameters	= &startParameters;
 
-    std::list<Trk::FitMeasurement*>::iterator m = measurements.begin();
+    std::vector<Trk::FitMeasurement*>::iterator m = measurements.begin();
     if ((**m).isVertex()) ++m;
     for ( ; m != measurements.end(); ++m)
     {
@@ -1709,7 +1701,7 @@ MaterialAllocator::indetMaterial (std::list<FitMeasurement*>&	measurements,
 
 std::pair<FitMeasurement*,FitMeasurement*>
 MaterialAllocator::materialAggregation (const std::vector<const TrackStateOnSurface*>& material,
-					std::list<FitMeasurement*>&	/*measurements*/,
+					std::vector<FitMeasurement*>&	/*measurements*/,
 					double				/*particleMass*/) const
 {
     // aggregation possible in indet and MS. Frequent occurrence in MS
@@ -1722,7 +1714,7 @@ MaterialAllocator::materialAggregation (const std::vector<const TrackStateOnSurf
 
     
     int adjacentScatterers		= 0;
-    std::list<FitMeasurement*> aggregateScatterers;
+    std::vector<FitMeasurement*> aggregateScatterers;
     bool haveAggregation		= false;
 //     bool makeAggregation		= false;
 //     double maxDistance			= 0.;
@@ -1823,7 +1815,7 @@ MaterialAllocator::materialAggregation (const std::vector<const TrackStateOnSurf
 // 		    double previousDistance	= 0.;
 // 		    haveAggregation		= true;
 		    
-// 		    for (std::list<Trk::FitMeasurement*>::reverse_iterator s = start;
+// 		    for (std::vector<Trk::FitMeasurement*>::reverse_iterator s = start;
 // 			 s != measurements.rend();
 // 			 ++s)
 // 		    {
@@ -1938,7 +1930,7 @@ MaterialAllocator::materialAggregation (const std::vector<const TrackStateOnSurf
 }
 
 void
-MaterialAllocator::materialAggregation (std::list<FitMeasurement*>&	measurements,
+MaterialAllocator::materialAggregation (std::vector<FitMeasurement*>&	measurements,
 					double				particleMass) const
 {
     // Aggregate when at least 2 scatterers exist between delimiter pair.
@@ -1955,7 +1947,7 @@ MaterialAllocator::materialAggregation (std::list<FitMeasurement*>&	measurements
     
     Amg::Vector3D referenceDirection	= measurements.back()->intersection(FittedTrajectory).direction();
     int adjacentScatterers		= 0;
-    std::list<FitMeasurement*> aggregateScatterers;
+    std::vector<FitMeasurement*> aggregateScatterers;
     bool haveAggregation		= false;
     bool makeAggregation		= false;
     double maxDistance			= 0.;
@@ -1965,9 +1957,9 @@ MaterialAllocator::materialAggregation (std::list<FitMeasurement*>&	measurements
     double totalDistanceSq		= 0.;
     double totalEnergyDeposit		= 0.;
     double totalThickness		= 0.;
-    std::list<FitMeasurement*>::reverse_iterator start;
-    std::list<FitMeasurement*>::reverse_iterator previous = measurements.rbegin();
-    for (std::list<FitMeasurement*>::reverse_iterator m = measurements.rbegin();
+    std::vector<FitMeasurement*>::reverse_iterator start;
+    std::vector<FitMeasurement*>::reverse_iterator previous = measurements.rbegin();
+    for (std::vector<FitMeasurement*>::reverse_iterator m = measurements.rbegin();
 	 m != measurements.rend();
 	 ++m)
     {
@@ -2081,7 +2073,7 @@ MaterialAllocator::materialAggregation (std::list<FitMeasurement*>&	measurements
 		    double previousDistance	= 0.;
 		    haveAggregation		= true;
 		    
-		    for (std::list<Trk::FitMeasurement*>::reverse_iterator s = start;
+		    for (std::vector<Trk::FitMeasurement*>::reverse_iterator s = start;
 			 s != measurements.rend();
 			 ++s)
 		    {
@@ -2223,11 +2215,11 @@ MaterialAllocator::materialAggregation (std::list<FitMeasurement*>&	measurements
     {
 	referencePosition  = measurements.back()->intersection(FittedTrajectory).position();
 	referenceDirection = (referencePosition - measurements.front()->intersection(FittedTrajectory).position()).unit();
-	std::list<Trk::FitMeasurement*>::reverse_iterator s = aggregateScatterers.rbegin();
+	std::vector<Trk::FitMeasurement*>::reverse_iterator s = aggregateScatterers.rbegin();
 	Amg::Vector3D scattererPosition	= (**s).intersection(FittedTrajectory).position();
 	double scattererDistance	=
 	    std::abs(referenceDirection.dot(scattererPosition - referencePosition));
-	for (std::list<Trk::FitMeasurement*>::iterator m = measurements.begin();
+	for (std::vector<Trk::FitMeasurement*>::iterator m = measurements.begin();
 	     m != measurements.end();
 	     ++m)
 	{
@@ -2249,7 +2241,7 @@ MaterialAllocator::materialAggregation (std::list<FitMeasurement*>&	measurements
 		// delete the scatterer if it has been aggregated
 		if ((**m).isOutlier()) delete *m;
 		// in any case it must be removed from the list to avoid double counting
-		std::list<Trk::FitMeasurement*>::iterator n = m;
+		std::vector<Trk::FitMeasurement*>::iterator n = m;
 		--m;
 		measurements.erase(n);
 	    }
@@ -2263,7 +2255,7 @@ MaterialAllocator::materialAggregation (std::list<FitMeasurement*>&	measurements
 	int n = 0;
 	Amg::Vector3D startPosition	= measurements.front()->intersection(FittedTrajectory).position();
 	Amg::Vector3D startDirection	= measurements.front()->intersection(FittedTrajectory).direction();
-	for (std::list<Trk::FitMeasurement*>::const_iterator m = measurements.begin();
+	for (std::vector<Trk::FitMeasurement*>::const_iterator m = measurements.begin();
 	     m != measurements.end();
 	     ++m)
 	{
@@ -2298,24 +2290,18 @@ MaterialAllocator::materialAggregation (std::list<FitMeasurement*>&	measurements
 
     // loops to erase material delimiters and set energy gain when appropriate
     bool energyGain = false;
-    for (std::list<Trk::FitMeasurement*>::iterator m = measurements.begin();
+    for (std::vector<Trk::FitMeasurement*>::iterator m = measurements.begin();
 	 m != measurements.end();
 	 ++m)
     {
 	if ((**m).materialEffects()
 	    && (**m).numberDoF()
 	    && (**m).energyLoss() < 0.)		energyGain = true;
-	
-// 	if (! (**m).isMaterialDelimiter())	continue;
-// 	delete *m;
-// 	std::list<Trk::FitMeasurement*>::iterator n = m;
-// 	--m;
-// 	measurements.erase(n);
     }
 
     if (energyGain)
     {
-	for (std::list<Trk::FitMeasurement*>::iterator m = measurements.begin();
+	for (std::vector<Trk::FitMeasurement*>::iterator m = measurements.begin();
 	     m != measurements.end();
 	     ++m)
 	{
@@ -2347,13 +2333,13 @@ MaterialAllocator::measurementFromTSOS (const TrackStateOnSurface&	tsos,
 }
  
 void
-MaterialAllocator::printMeasurements(std::list<FitMeasurement*>&	measurements) const
+MaterialAllocator::printMeasurements(std::vector<FitMeasurement*>&	measurements) const
 {
     ATH_MSG_VERBOSE( "measurements and material:  distance        X0   deltaE            E        pT"
 		     << "           R      phi         Z  DoF      phi    theta" );
 
     if (! measurements.size())			return;
-    std::list<Trk::FitMeasurement*>::iterator m = measurements.begin();
+    std::vector<Trk::FitMeasurement*>::iterator m = measurements.begin();
     while (m != measurements.end()
 	   && ! (**m).isPositionMeasurement())	++m;
     if (m == measurements.end())		m = measurements.begin();
@@ -2367,7 +2353,7 @@ MaterialAllocator::printMeasurements(std::list<FitMeasurement*>&	measurements) c
     double leadingELoss		= 0.;
     double sumELoss		= 0.;
     int n			= 0;
-    for (std::list<Trk::FitMeasurement*>::iterator m = measurements.begin();
+    for (std::vector<Trk::FitMeasurement*>::iterator m = measurements.begin();
 	 m != measurements.end();
 	 ++m)
     {
@@ -2458,7 +2444,7 @@ MaterialAllocator::printMeasurements(std::list<FitMeasurement*>&	measurements) c
 }
 
 void
-MaterialAllocator::spectrometerMaterial (std::list<FitMeasurement*>&	measurements,
+MaterialAllocator::spectrometerMaterial (std::vector<FitMeasurement*>&	measurements,
 					 ParticleHypothesis		particleHypothesis,
 					 const FitParameters&		fitParameters,
 					 const TrackParameters&		startParameters) const
@@ -2481,7 +2467,7 @@ MaterialAllocator::spectrometerMaterial (std::list<FitMeasurement*>&	measurement
     double minDistanceMS		= 0.;
     double minRDistanceMS		= 0.;
     double minZDistanceMS		= 0.;
-    std::list<Trk::FitMeasurement*>::iterator m = measurements.begin();
+    std::vector<Trk::FitMeasurement*>::iterator m = measurements.begin();
     for ( ; m != measurements.end(); ++m)
     {
 	Amg::Vector3D position			= (**m).intersection(FittedTrajectory).position();
@@ -2605,7 +2591,7 @@ MaterialAllocator::spectrometerMaterial (std::list<FitMeasurement*>&	measurement
 	    entranceIntersection = new TrackSurfaceIntersection(entranceParameters->position(),
 								entranceParameters->momentum().unit(),
 								0.);
-	    std::list<Trk::FitMeasurement*>::iterator e = measurements.begin();
+	    std::vector<Trk::FitMeasurement*>::iterator e = measurements.begin();
 	    FitMeasurement* entranceDelimiter = new FitMeasurement(*entranceIntersection, 0.);
 	    for (m = measurements.begin(); m != measurements.end(); ++m)
 	    {
@@ -2754,7 +2740,7 @@ MaterialAllocator::spectrometerMaterial (std::list<FitMeasurement*>&	measurement
 	std::vector<FitMeasurement*> material;
 	double particleMass	= ParticleMasses().mass[particleHypothesis];
 	material.reserve(spectrometerMaterial->size());
-	std::list<FitMeasurement*>::iterator m = measurements.begin();
+	std::vector<FitMeasurement*>::iterator m = measurements.begin();
 	for ( ; s != spectrometerMaterial->rend(); )
 	{
 	    const TrackStateOnSurface& tsos	= **s;
diff --git a/Tracking/TrkFitter/TrkiPatFitter/src/iPatFitter.cxx b/Tracking/TrkFitter/TrkiPatFitter/src/iPatFitter.cxx
index a03e671edaa05e1d14e2399d0801d01082f9f96e..bea7a21ba60ed6e6f25748598a65079818de2d45 100755
--- a/Tracking/TrkFitter/TrkiPatFitter/src/iPatFitter.cxx
+++ b/Tracking/TrkFitter/TrkiPatFitter/src/iPatFitter.cxx
@@ -7,8 +7,6 @@
  and fit quality. 
  ***************************************************************************/
 
-//<<<<<< INCLUDES                                                       >>>>>>
-
 #include <cmath>
 #include <iomanip>
 #include "EventPrimitives/EventPrimitives.h"
@@ -48,8 +46,6 @@
 namespace Trk
 { 
 
-//<<<<<< CLASS STRUCTURE INITIALIZATION                                 >>>>>>
-
 iPatFitter::iPatFitter (const std::string&	type, 
 			const std::string&	name,
 			const IInterface*	parent)
@@ -120,8 +116,6 @@ iPatFitter::iPatFitter (const std::string&	type,
 iPatFitter::~iPatFitter (void)
 {}
 
-//<<<<<< PUBLIC MEMBER FUNCTION DEFINITIONS                             >>>>>>
-
 StatusCode
 iPatFitter::initialize()
 {
@@ -293,11 +287,9 @@ iPatFitter::finalize()
     // delete all objects owned by class
     if (m_globalFit && m_measurements)
     {
-	for (std::list<Trk::FitMeasurement*>::iterator m = m_measurements->begin();
-	     m != m_measurements->end();
-	     ++m)
+      for (auto m : *m_measurements)
 	{
-	    delete *m;
+	    delete m;
 	}
 	m_measurements->clear();
     }
@@ -354,7 +346,7 @@ iPatFitter::fit	(const Track&			track,
 	return 0;
     }
     
-    std::list<FitMeasurement*>* measurements = measurementList();
+    std::vector<FitMeasurement*>* measurements = measurementList();
     bool haveMaterial = addMeasurements(*measurements,
 					*m_parameters,
 					particleHypothesis,
@@ -441,7 +433,7 @@ iPatFitter::fit	(const Track&			track,
     m_parameters	= new FitParameters(*perigee);
     
     // set up the measurements (and material)
-    std::list<FitMeasurement*>* measurements = measurementList();
+    std::vector<FitMeasurement*>* measurements = measurementList();
     if (addMeasurements(*measurements,*m_parameters,particleHypothesis,*track.trackStateOnSurfaces()))
 	m_messageHelper->printWarning(8);	// FIX needed: material may get double counted
     addMeasurements(*measurements,
@@ -489,7 +481,7 @@ iPatFitter::fit	(const MeasurementSet&		measurementSet,
     m_parameters	= new FitParameters(*perigee);
     
     // set up the measurements (and material)
-    std::list<FitMeasurement*>* measurements = measurementList();
+    std::vector<FitMeasurement*>* measurements = measurementList();
     addMeasurements(*measurements,measurementSet,*m_parameters);
     if (particleHypothesis != Trk::nonInteracting)
     {
@@ -517,7 +509,7 @@ iPatFitter::fit	(const Track&			indetTrack,
 
     // indet (full refit to measurements or use measured perigee)
     bool haveMaterial	= true;
-    std::list<FitMeasurement*>* measurements = measurementList();
+    std::vector<FitMeasurement*>* measurements = measurementList();
     delete m_parameters;
     if (indetTrack.perigeeParameters())
     {
@@ -620,7 +612,7 @@ iPatFitter::fit	(const Track&			indetTrack,
 	    m_messageHelper->printWarning(14);
 	    return 0;
 	}
-	measurements->push_front(new FitMeasurement(*indetPerigee));
+	measurements->insert(measurements->begin(), new FitMeasurement(*indetPerigee));
 	FitParameters measuredParameters(*indetPerigee);
 	Trk::Track* fittedTrack = performFit(measurements,
 					     &measuredParameters,
@@ -637,10 +629,8 @@ iPatFitter::fit	(const Track&			indetTrack,
     }
 }
 
-//<<<<<< PRIVATE MEMBER FUNCTION DEFINITIONS                            >>>>>>
-
 void
-iPatFitter::addMeasurements (std::list<FitMeasurement*>&	measurements,
+iPatFitter::addMeasurements (std::vector<FitMeasurement*>&	measurements,
 			     const MeasurementSet&		measurementSet,
 			     const FitParameters&		parameters) const
 {
@@ -737,7 +727,7 @@ iPatFitter::addMeasurements (std::list<FitMeasurement*>&	measurements,
 }
 
 bool
-iPatFitter::addMeasurements (std::list<FitMeasurement*>&		  measurements,
+iPatFitter::addMeasurements (std::vector<FitMeasurement*>&		  measurements,
 			     const FitParameters&			  parameters,
 			     ParticleHypothesis				  particleHypothesis,
 			     const DataVector<const TrackStateOnSurface>& trackStateOnSurfaces) const
@@ -1103,29 +1093,27 @@ iPatFitter::addMeasurements (std::list<FitMeasurement*>&		  measurements,
     return haveMaterial;
 }
 
-std::list<FitMeasurement*>*&
+std::vector<FitMeasurement*>*&
 iPatFitter::measurementList (void) const
 {
     if (m_globalFit && m_measurements)
     {
-	for (std::list<Trk::FitMeasurement*>::iterator m = m_measurements->begin();
-	     m != m_measurements->end();
-	     ++m)
+      for (auto m : *m_measurements)
 	{
-	    delete *m;
+	    delete m;
 	}
 	m_measurements->clear();
     }
     else
     {
-	m_measurements	= new std::list<FitMeasurement*>;
+	m_measurements	= new std::vector<FitMeasurement*>;
     }
 
     return m_measurements;
 }
      
 Track*
-iPatFitter::performFit(std::list<FitMeasurement*>*			measurements,
+iPatFitter::performFit(std::vector<FitMeasurement*>*			measurements,
 		       FitParameters*					parameters,
 		       const ParticleHypothesis				particleHypothesis,
 		       const TrackInfo&					trackInfo,
@@ -1219,42 +1207,40 @@ iPatFitter::performFit(std::list<FitMeasurement*>*			measurements,
 		int spect		= 0;
 		double spectX0		= 0.;
 		double spectEloss	= 0.;
-		for (std::list<FitMeasurement*>::const_iterator m = measurements->begin();
-		     m != measurements->end();
-		     ++m)
+		for (auto m : *measurements)
 		{
-		    if ((**m).isEnergyDeposit())
+		    if (m->isEnergyDeposit())
 		    {
 			++calo;
-			caloEloss	+= (**m).energyLoss();
+			caloEloss	+= m->energyLoss();
 		    }
-		    else if (! (**m).isScatterer())
+		    else if (! m->isScatterer())
 		    {
 			continue;
 		    }
 		
-		    if (m_indetVolume->inside((**m).position()))
+		    if (m_indetVolume->inside(m->position()))
 		    {
 			++indet;
-			indetX0	+= (**m).materialEffects()->thicknessInX0();
-			indetEloss	+= (**m).energyLoss();
+			indetX0	+= m->materialEffects()->thicknessInX0();
+			indetEloss	+= m->energyLoss();
 			// conflicting energy deposit sign for inDet material
-			if ((**m).energyLoss()*indetEloss < 0.) m_messageHelper->printWarning(21);
+			if (m->energyLoss()*indetEloss < 0.) m_messageHelper->printWarning(21);
 			continue;
 		    }
 		    else if (m_calorimeterVolume->inside(
-				 (**m).intersection(FittedTrajectory).position()))
+				 m->intersection(FittedTrajectory).position()))
 		    {
 			++calo;
-			caloX0	+= (**m).materialEffects()->thicknessInX0();
+			caloX0	+= m->materialEffects()->thicknessInX0();
 			continue;
 		    }
 		
 		    ++spect;
-		    spectX0	+= (**m).materialEffects()->thicknessInX0();
-		    spectEloss	+= (**m).energyLoss();
+		    spectX0	+= m->materialEffects()->thicknessInX0();
+		    spectEloss	+= m->energyLoss();
 		    // conflicting energy deposit sign for spectrometer material
-		    if ((**m).energyLoss()*spectEloss < 0.) m_messageHelper->printWarning(22);
+		    if (m->energyLoss()*spectEloss < 0.) m_messageHelper->printWarning(22);
 		}
 
 		// WARN in case of bug #56297
@@ -1326,11 +1312,9 @@ iPatFitter::performFit(std::list<FitMeasurement*>*			measurements,
     // clean up and return
     if (! m_globalFit || ! fittedTrack)
     {
-	for (std::list<Trk::FitMeasurement*>::iterator m = measurements->begin();
-	     m != measurements->end();
-	     ++m)
+      for (auto m: *m_measurements)
 	{
-	    delete *m;
+	    delete m;
 	}
 	measurements->clear();
 	delete measurements;
@@ -1446,7 +1430,7 @@ iPatFitter::refit(const Track&			track,
 	return;
     }
     
-    std::list<FitMeasurement*>* measurements = measurementList();
+    std::vector<FitMeasurement*>* measurements = measurementList();
     bool haveMaterial = addMeasurements(*measurements,
 					*m_parameters,
 					particleHypothesis,
diff --git a/Tracking/TrkFitter/TrkiPatFitter/src/iPatGlobalFitter.cxx b/Tracking/TrkFitter/TrkiPatFitter/src/iPatGlobalFitter.cxx
index b2d80f3de0ec238b2985e59d4a591d58209e6383..ece214fac7f5330f467991ebf0f3c3a19a9d1838 100755
--- a/Tracking/TrkFitter/TrkiPatFitter/src/iPatGlobalFitter.cxx
+++ b/Tracking/TrkFitter/TrkiPatFitter/src/iPatGlobalFitter.cxx
@@ -9,7 +9,6 @@
 // (c) ATLAS Detector software
 ///////////////////////////////////////////////////////////////////
 
-//<<<<<< INCLUDES                                                       >>>>>>
 
 #include "GaudiKernel/SystemOfUnits.h"
 #include "TrkiPatFitterUtils/ExtrapolationType.h"
@@ -21,8 +20,6 @@
 namespace Trk
 { 
 
-//<<<<<< CLASS STRUCTURE INITIALIZATION                                 >>>>>>
-
 iPatGlobalFitter::iPatGlobalFitter (const std::string&	type, 
 				    const std::string&	name,
 				    const IInterface*	parent)
@@ -40,8 +37,6 @@ iPatGlobalFitter::~iPatGlobalFitter (void)
     delete m_derivativeMatrix;
 }
 
-//<<<<<< PUBLIC MEMBER FUNCTION DEFINITIONS                             >>>>>>
-
 Amg::MatrixX*
 iPatGlobalFitter::DerivMatrix() const
 {
@@ -53,7 +48,7 @@ iPatGlobalFitter::DerivMatrix() const
     int numberParameters	= 5;
     if (m_allParameters) numberParameters = m_parameters->numberParameters();
     int rows	= 0;
-    for (std::list<FitMeasurement*>::iterator m = m_measurements->begin();
+    for (std::vector<FitMeasurement*>::iterator m = m_measurements->begin();
          m != m_measurements->end();
 	 ++m)
     {
@@ -68,7 +63,7 @@ iPatGlobalFitter::DerivMatrix() const
     
     m_derivativeMatrix = new Amg::MatrixX(rows,numberParameters);
     int row	= 0;
-    for (std::list<FitMeasurement*>::iterator m = m_measurements->begin();
+    for (std::vector<FitMeasurement*>::iterator m = m_measurements->begin();
          m != m_measurements->end();
 	 ++m)
     {
@@ -118,7 +113,6 @@ int
 iPatGlobalFitter::iterationsOfLastFit() const
 { return m_iterations; }
 
-//<<<<<< PRIVATE MEMBER FUNCTION DEFINITIONS                            >>>>>>
   
 void
 iPatGlobalFitter::setMinIterations(int minIterations)
diff --git a/Tracking/TrkFitter/TrkiPatFitterUtils/TrkiPatFitterUtils/FitMatrices.h b/Tracking/TrkFitter/TrkiPatFitterUtils/TrkiPatFitterUtils/FitMatrices.h
index 6cf8f21c160dfe0b6cab7183b170eb5d52067cda..2205bc52de7d2f2bb57aeb7f4f8bf2f568b4fe85 100755
--- a/Tracking/TrkFitter/TrkiPatFitterUtils/TrkiPatFitterUtils/FitMatrices.h
+++ b/Tracking/TrkFitter/TrkiPatFitterUtils/TrkiPatFitterUtils/FitMatrices.h
@@ -92,7 +92,7 @@ namespace Trk
      void			releaseMemory (void);
 
      // initialize matrices - set appropriate dimensions for a given set of measurements 
-     int	       		setDimensions (std::list<FitMeasurement*>&	measurements,
+     int	       		setDimensions (std::vector<FitMeasurement*>&	measurements,
 					       FitParameters*			parameters);
     
      // solve matrix equations for parameters change
@@ -120,7 +120,7 @@ namespace Trk
      double				m_largePhiWeight;
      std::vector<int>			m_lastRowForParameter;
      bool				m_matrixFromCLHEP;
-     std::list<FitMeasurement*>*	m_measurements;
+     std::vector<FitMeasurement*>*	m_measurements;
      int			       	m_numberDoF;
      int		       		m_numberDriftCircles;
      int		      	 	m_numberPerigee;
diff --git a/Tracking/TrkFitter/TrkiPatFitterUtils/TrkiPatFitterUtils/FitProcedure.h b/Tracking/TrkFitter/TrkiPatFitterUtils/TrkiPatFitterUtils/FitProcedure.h
index cd7ed4cdb9b3d877ce0c9bc6f55c6d56073460eb..60c80d4bf5a996a4e3f24ba9732ef4152a33e6eb 100755
--- a/Tracking/TrkFitter/TrkiPatFitterUtils/TrkiPatFitterUtils/FitProcedure.h
+++ b/Tracking/TrkFitter/TrkiPatFitterUtils/TrkiPatFitterUtils/FitProcedure.h
@@ -17,11 +17,11 @@
 //////////////////////////////////////////////////////////////////////////////
 
 #ifndef TRKIPATFITTERUTILS_FITPROCEDURE_H
-# define TRKIPATFITTERUTILS_FITPROCEDURE_H
+#define TRKIPATFITTERUTILS_FITPROCEDURE_H
 
 //<<<<<< INCLUDES                                                       >>>>>>
 
-#include <list>
+#include <vector>
 #include "DataModel/DataVector.h"
 #include "GaudiKernel/ToolHandle.h"
 #include "TrkEventPrimitives/ParticleHypothesis.h"
@@ -66,7 +66,7 @@ public:
     void	clear (void);
     
     // retrieve result
-    Track*	constructTrack (const std::list<FitMeasurement*>&		measurements,
+    Track*	constructTrack (const std::vector<FitMeasurement*>&		measurements,
 				const FitParameters&				parameters,
 				const TrackInfo&				trackInfo,
 				const DataVector<const TrackStateOnSurface>*	leadingTSOS = 0);
@@ -74,7 +74,7 @@ public:
     // perform fit procedure
     const FitProcedureQuality&	execute (bool					asymmetricCaloEnergy,
 					 MsgStream&				log,
-					 std::list<FitMeasurement*>&		measurements,
+					 std::vector<FitMeasurement*>&		measurements,
 					 FitParameters*&			parameters,
 					 const FitQuality*			perigeeQuality = 0,
 					 bool					for_iPatTrack = false);
@@ -90,10 +90,10 @@ private:
     FitProcedure (const FitProcedure&);
     FitProcedure &operator= (const FitProcedure&);
     
-    void				calculateChiSq(std::list<FitMeasurement*>&	measurements);
-    ToolHandle<IIntersector>&		chooseIntersector(std::list<FitMeasurement*>&	measurements,
+    void				calculateChiSq(std::vector<FitMeasurement*>&	measurements);
+    ToolHandle<IIntersector>&		chooseIntersector(std::vector<FitMeasurement*>&	measurements,
 							  const FitParameters&	parameters) const;
-    void				reportQuality(const std::list<FitMeasurement*>&	measurements,
+    void				reportQuality(const std::vector<FitMeasurement*>& measurements,
 						      const FitParameters&	parameters) const;
 
     double				m_chRatio1;
diff --git a/Tracking/TrkFitter/TrkiPatFitterUtils/TrkiPatFitterUtils/IMaterialAllocator.h b/Tracking/TrkFitter/TrkiPatFitterUtils/TrkiPatFitterUtils/IMaterialAllocator.h
index d721939774f10d131c9483559292de5d91edb208..6c9b65c79efc132cebaa58cbedb8d19d9f29a3ee 100755
--- a/Tracking/TrkFitter/TrkiPatFitterUtils/TrkiPatFitterUtils/IMaterialAllocator.h
+++ b/Tracking/TrkFitter/TrkiPatFitterUtils/TrkiPatFitterUtils/IMaterialAllocator.h
@@ -13,7 +13,6 @@
 #ifndef TRKIPATFITTERUTILS_IMATERIALALLOCATOR_H
 #define TRKIPATFITTERUTILS_IMATERIALALLOCATOR_H
 
-#include <list>
 #include <vector>
 #include "GaudiKernel/IAlgTool.h"
 #include "TrkEventPrimitives/ParticleHypothesis.h"
@@ -48,12 +47,12 @@ public:
     static const InterfaceID&	interfaceID() { return IID_IMaterialAllocator; }
     
     /**IMaterialAllocator interface: add leading material effects to fit measurements and parameters */
-    virtual void	addLeadingMaterial (std::list<FitMeasurement*>&	measurements,
-					    ParticleHypothesis		particleHypothesis,
-					    FitParameters&		fitParameters) const = 0;
+    virtual void	addLeadingMaterial (std::vector<FitMeasurement*>& measurements,
+					    ParticleHypothesis		  particleHypothesis,
+					    FitParameters&		  fitParameters) const = 0;
     
     /**IMaterialAllocator interface: allocate material */
-    virtual void	allocateMaterial (std::list<FitMeasurement*>&	measurements,
+    virtual void	allocateMaterial (std::vector<FitMeasurement*>&	measurements,
 					  ParticleHypothesis		particleHypothesis,
 					  const FitParameters&		fitParameters,
 					  const TrackParameters&	startParameters) const = 0;
@@ -62,7 +61,7 @@ public:
     virtual void	clear (void) = 0;
 
     /**IMaterialAllocator interface: initialize scattering (needs to know X0 integral) */
-    virtual void	initializeScattering (std::list<FitMeasurement*>& measurements) const = 0;
+    virtual void	initializeScattering (std::vector<FitMeasurement*>& measurements) const = 0;
 
     /**IMaterialAllocator interface:
        material TSOS between spectrometer entrance surface and parameters given in spectrometer */
@@ -70,13 +69,13 @@ public:
 	const TrackParameters& spectrometerParameters) const = 0;
     
     /**IMaterialAllocator interface: clear temporary TSOS*/
-    virtual void	orderMeasurements (std::list<FitMeasurement*>&	measurements,
-					   Amg::Vector3D		startDirection,
-					   Amg::Vector3D		startPosition) const = 0;
+    virtual void	orderMeasurements (std::vector<FitMeasurement*>& measurements,
+					   Amg::Vector3D		 startDirection,
+					   Amg::Vector3D		 startPosition) const = 0;
     
     /**IMaterialAllocator interface: has material been reallocated? */   
-    virtual bool	reallocateMaterial (std::list<FitMeasurement*>&	measurements,
-					    const FitParameters&	fitParameters) const = 0;
+    virtual bool	reallocateMaterial (std::vector<FitMeasurement*>& measurements,
+					    const FitParameters&	  fitParameters) const = 0;
 
 };
  
diff --git a/Tracking/TrkFitter/TrkiPatFitterUtils/TrkiPatFitterUtils/MeasurementProcessor.h b/Tracking/TrkFitter/TrkiPatFitterUtils/TrkiPatFitterUtils/MeasurementProcessor.h
index d27845fc4d196e045a011898c2fd424cc1364ae5..c904066cab6aa2e7fa12a8be7d50f4c2710f7ce6 100755
--- a/Tracking/TrkFitter/TrkiPatFitterUtils/TrkiPatFitterUtils/MeasurementProcessor.h
+++ b/Tracking/TrkFitter/TrkiPatFitterUtils/TrkiPatFitterUtils/MeasurementProcessor.h
@@ -34,7 +34,7 @@ public:
     MeasurementProcessor (bool					asymmetricCaloEnergy,
 			  Amg::MatrixX&				derivativeMatrix,
 			  ToolHandle<IIntersector>&		intersector,
-			  std::list<FitMeasurement*>&		measurements,
+			  std::vector<FitMeasurement*>&		measurements,
 			  FitParameters*			parameters,
 			  ToolHandle<IIntersector>&    		rungeKuttaIntersector,
 			  const ToolHandle<IPropagator>&    	stepPropagator,
@@ -71,7 +71,7 @@ private:
     ToolHandle<IIntersector>&		m_intersector;
     double				m_largeDeltaD0;
     double				m_largeDeltaPhi0;
-    std::list<FitMeasurement*>& 	m_measurements;
+    std::vector<FitMeasurement*>&	m_measurements;
     //double				m_minDistanceForAngle;
     bool				m_numericDerivatives;
     FitParameters*			m_parameters;
diff --git a/Tracking/TrkFitter/TrkiPatFitterUtils/src/FitMatrices.cxx b/Tracking/TrkFitter/TrkiPatFitterUtils/src/FitMatrices.cxx
index cc5e2ff27bc71b6601b9357e31eab8ab714b4774..524d13f92f32b7f28af1aea4ccee1374dd865258 100755
--- a/Tracking/TrkFitter/TrkiPatFitterUtils/src/FitMatrices.cxx
+++ b/Tracking/TrkFitter/TrkiPatFitterUtils/src/FitMatrices.cxx
@@ -23,8 +23,6 @@
 //  (c) ATLAS tracking software
 //////////////////////////////////////////////////////////////////////////////
 
-//<<<<<< INCLUDES                                                       >>>>>>
-
 #include <iomanip>
 #include <iostream>
 #include "GaudiKernel/MsgStream.h"
@@ -35,8 +33,6 @@
 #include "TrkiPatFitterUtils/FitMeasurement.h"
 #include "TrkiPatFitterUtils/FitParameters.h"
 
-//<<<<<< CLASS STRUCTURE INITIALIZATION                                 >>>>>>
-
 namespace Trk{
     
 FitMatrices::FitMatrices(bool constrainedAlignmentEffects)
@@ -72,8 +68,6 @@ FitMatrices::~FitMatrices(void)
     delete m_weightedDifference;
 }
 
-//<<<<<< PUBLIC MEMBER FUNCTION DEFINITIONS                             >>>>>>
-
 void
 FitMatrices::checkPointers (MsgStream& log) const
 {
@@ -230,7 +224,7 @@ FitMatrices::printDerivativeMatrix (void)
     int firstCol	= 0;
     int lastCol		= 0;
     if (! m_measurements)		return;
-    std::list<FitMeasurement*>::iterator m = m_measurements->begin();
+    std::vector<FitMeasurement*>::iterator m = m_measurements->begin();
     std::vector<FitMeasurement*> alignmentfm;
     FitMeasurement* fm	= *m;
     bool singleRow	= true;
@@ -379,8 +373,8 @@ FitMatrices::releaseMemory (void)
 }
     
 int
-FitMatrices::setDimensions (std::list<FitMeasurement*>&	measurements,
-			    FitParameters*		parameters)
+FitMatrices::setDimensions (std::vector<FitMeasurement*>&	measurements,
+			    FitParameters*		        parameters)
 {
     // keep pointer for debug purposes
     m_measurements		= &measurements;
@@ -407,7 +401,7 @@ FitMatrices::setDimensions (std::list<FitMeasurement*>&	measurements,
  
     // keep first row with measurements up to each number of parameters
     m_firstRowForParameter	= std::vector<int>(numberParameters,-1);
-    std::list<FitMeasurement*>::iterator m = measurements.begin();
+    std::vector<FitMeasurement*>::iterator m = measurements.begin();
     if ((**m).isVertex())
     {
 	haveVertex			= true;
@@ -733,7 +727,6 @@ FitMatrices::usePerigee (const FitMeasurement& measurement)
 }
 
 
-//<<<<<< PRIVATE MEMBER FUNCTION DEFINITIONS                            >>>>>>
 
 void
 FitMatrices::addPerigeeMeasurement (void)
diff --git a/Tracking/TrkFitter/TrkiPatFitterUtils/src/FitMeasurement.cxx b/Tracking/TrkFitter/TrkiPatFitterUtils/src/FitMeasurement.cxx
index 09268e3008ea4110674ea3680a03d0440b956ae0..a005b63d24d5a70017d63a31a8437b646469fe13 100755
--- a/Tracking/TrkFitter/TrkiPatFitterUtils/src/FitMeasurement.cxx
+++ b/Tracking/TrkFitter/TrkiPatFitterUtils/src/FitMeasurement.cxx
@@ -8,8 +8,6 @@
    i.e. position, surface, weights, intersection, derivatives, residual etc
  ***************************************************************************/
 
-//<<<<<< INCLUDES                                                       >>>>>>
-
 #include <cmath>
 #include <iomanip>
 #include <iostream>
@@ -38,8 +36,6 @@
 
 namespace Trk{
   
-//<<<<<< CLASS STRUCTURE INITIALIZATION                                 >>>>>>
-
 // MeasurementBase
 FitMeasurement::FitMeasurement (int		       	hitIndex,
 				HitOnTrack*		hitOnTrack,
@@ -1017,8 +1013,6 @@ FitMeasurement::~FitMeasurement (void)
     if (m_materialEffects && m_materialEffectsOwner) delete m_materialEffects;
 }
 
-//<<<<<< MEMBER FUNCTION DEFINITIONS                                    >>>>>>
-
 void
 FitMeasurement::intersection (ExtrapolationType type,
 			      const TrackSurfaceIntersection* value)
diff --git a/Tracking/TrkFitter/TrkiPatFitterUtils/src/FitParameters.cxx b/Tracking/TrkFitter/TrkiPatFitterUtils/src/FitParameters.cxx
index a976bcc6b195864280347417eb15748c2f4d296f..79ed4fb95a09d17e1ef28839eb96a2f313f6bcfd 100755
--- a/Tracking/TrkFitter/TrkiPatFitterUtils/src/FitParameters.cxx
+++ b/Tracking/TrkFitter/TrkiPatFitterUtils/src/FitParameters.cxx
@@ -6,8 +6,6 @@
  local parameter values used during fitter
  ***************************************************************************/
 
-//<<<<<< INCLUDES                                                       >>>>>>
-
 #include <cmath>
 #include <iomanip>
 #include <iostream>
@@ -24,8 +22,6 @@
 
 namespace Trk{
   
-//<<<<<< CLASS STRUCTURE INITIALIZATION                                 >>>>>>
-
 FitParameters::FitParameters (const Perigee& perigee)
     : m_cosPhi1				(0.),
       m_cosTheta1			(0.),
@@ -159,8 +155,6 @@ FitParameters::~FitParameters (void)
     delete m_differences;
 }
 
-//<<<<<< MEMBER FUNCTION DEFINITIONS                                    >>>>>>
-
 void
 FitParameters::addAlignment (bool constrained, double angle, double offset)
 {
diff --git a/Tracking/TrkFitter/TrkiPatFitterUtils/src/FitProcedure.cxx b/Tracking/TrkFitter/TrkiPatFitterUtils/src/FitProcedure.cxx
index e895e66daaec16f425377d9fac06d8f322f9d0fc..1b0902b2826610f22e0bf2cfe820ca35c51219f6 100755
--- a/Tracking/TrkFitter/TrkiPatFitterUtils/src/FitProcedure.cxx
+++ b/Tracking/TrkFitter/TrkiPatFitterUtils/src/FitProcedure.cxx
@@ -43,9 +43,6 @@
 
 namespace Trk{
   
-//<<<<<< CLASS STRUCTURE INITIALIZATION                                 >>>>>>
-
-
 // constructor
 FitProcedure::FitProcedure (bool				constrainedAlignmentEffects,
 			    bool				extendedDebug,
@@ -105,8 +102,6 @@ FitProcedure::~FitProcedure (void)
     delete m_fitQuality;
 }
 
-//<<<<<< PUBLIC MEMBER FUNCTION DEFINITIONS                             >>>>>>
-
 void
 FitProcedure::clear (void)
 {
@@ -114,7 +109,7 @@ FitProcedure::clear (void)
 }
 
 Track*
-FitProcedure::constructTrack (const std::list<FitMeasurement*>&			measurements,
+FitProcedure::constructTrack (const std::vector<FitMeasurement*>&		measurements,
 			      const FitParameters&				parameters,
 			      const TrackInfo&					trackInfo,
 			      const DataVector<const TrackStateOnSurface>*	leadingTSOS)
@@ -170,14 +165,12 @@ FitProcedure::constructTrack (const std::list<FitMeasurement*>&			measurements,
     }
     
     // then append the fitted TSOS
-    for (std::list<FitMeasurement*>::const_iterator m = measurements.begin();
-    	 m != measurements.end();
-    	 ++m)
+    for (auto m : measurements)
     {
-	if ((**m).isMaterialDelimiter()) continue;
+	if (m->isMaterialDelimiter()) continue;
 	
 	// push back previous TSOS when fresh surface reached
-	if ((**m).surface() != surface || alignmentEffects || (**m).alignmentEffects())
+	if (m->surface() != surface || alignmentEffects || m->alignmentEffects())
 	{
 	    if (surface)
 	    {
@@ -186,8 +179,8 @@ FitProcedure::constructTrack (const std::list<FitMeasurement*>&			measurements,
 		    if (m_debug)
 		    {
 			*m_log << MSG::DEBUG << " skip empty TSOS# " << tsos + 1;
-			if ((**m).materialEffects()) *m_log << " with material";
-			(**m).print(*m_log);
+			if (m->materialEffects()) *m_log << " with material";
+			m->print(*m_log);
 			*m_log << endmsg;
 		    }
 		}
@@ -198,6 +191,7 @@ FitProcedure::constructTrack (const std::list<FitMeasurement*>&			measurements,
 		    trackParameters	= parameters.trackParameters(*m_log,
 								     *fitMeasurement,
 								     withCovariance);
+
 		    if (! trackParameters)
 		    {
 			*m_log << MSG::WARNING
@@ -216,8 +210,8 @@ FitProcedure::constructTrack (const std::list<FitMeasurement*>&			measurements,
 		    ++tsos;
 		}
 	    }
-	    fitMeasurement	= *m;
-	    surface 		= (**m).surface();
+	    fitMeasurement	= m;
+	    surface 		= m->surface();
 	    measurementBase	= 0;
 	    fitQoS		= 0;
 	    materialEffects	= 0;
@@ -226,12 +220,12 @@ FitProcedure::constructTrack (const std::list<FitMeasurement*>&			measurements,
 	}
 	else
 	{
-	    fitMeasurement	= *m;
+	    fitMeasurement	= m;
 	    if (m_verbose) *m_log << MSG::VERBOSE << " tsos# " << tsos << " shared surface" << endmsg;
 	}
 
 	// it's a measurement
-	if ((**m).measurementBase())
+	if (m->measurementBase())
 	{
 	    // create an extra TSOS if there is already a measurement on this surface
 	    // (dirty fix for pseudoMeasurements)
@@ -258,77 +252,77 @@ FitProcedure::constructTrack (const std::list<FitMeasurement*>&			measurements,
 									typePattern,
 									alignmentEffects));
 		++tsos;
-		fitMeasurement		= *m;
+		fitMeasurement		= m;
 		fitQoS			= 0;
 		materialEffects		= 0;
 		typePattern		= defaultPattern;
 		alignmentEffects	= 0;
 	    }
 	    
-	    measurementBase	= (**m).measurementBase()->clone();
+	    measurementBase	= m->measurementBase()->clone();
 	    typePattern.set(TrackStateOnSurface::Measurement);
-	    if ((**m).isOutlier()) typePattern.set(TrackStateOnSurface::Outlier);
+	    if (m->isOutlier()) typePattern.set(TrackStateOnSurface::Outlier);
 	}
 
 	// it's a CaloDeposit or Scatterer (scatterers may be fitted or not fitted)
-	if ((**m).materialEffects())
+	if (m->materialEffects())
 	{
 	    // update momentum to account for energy loss
 	    delete materialEffects;
 
-	    if ((**m).isEnergyDeposit())
+	    if (m->isEnergyDeposit())
 	    {
-		materialEffects	= (**m).materialEffects()->clone();
+		materialEffects	= m->materialEffects()->clone();
 		typePattern.set(TrackStateOnSurface::CaloDeposit);
 	    }
-	    else if ((**m).isScatterer())
+	    else if (m->isScatterer())
 	    {
 		// set materialPattern as the scattering parameters are fitted
 		std::bitset<MaterialEffectsBase::NumberOfMaterialEffectsTypes> typeMaterial;
 		typeMaterial.set(MaterialEffectsBase::FittedMaterialEffects);
 		const MaterialEffectsOnTrack* meot	=
-		    dynamic_cast<const MaterialEffectsOnTrack*>((**m).materialEffects());
+		    dynamic_cast<const MaterialEffectsOnTrack*>(m->materialEffects());
 		if (meot && meot->energyLoss())	// standard scatterer
 		{
 		    const EnergyLoss* energyLoss = meot->energyLoss()->clone();
 		    typeMaterial.set(Trk::MaterialEffectsBase::EnergyLossEffects);
-		    if ((**m).numberDoF())	// fitted scatterer	
+		    if (m->numberDoF())	// fitted scatterer	
 		    {
 			materialEffects	=
-			    new MaterialEffectsOnTrack((**m).materialEffects()->thicknessInX0(),
-						       parameters.scatteringAngles(**m,scatter), 
+			    new MaterialEffectsOnTrack(m->materialEffects()->thicknessInX0(),
+						       parameters.scatteringAngles(*m,scatter), 
 						       energyLoss,
-						       (**m).materialEffects()->associatedSurface(),
+						       m->materialEffects()->associatedSurface(),
 						       typeMaterial);
 			++scatter;
 		    }
 		    else			// unfitted (leading material)
 		    {
 			materialEffects	=
-			    new MaterialEffectsOnTrack((**m).materialEffects()->thicknessInX0(),
-						       parameters.scatteringAngles(**m), 
+			    new MaterialEffectsOnTrack(m->materialEffects()->thicknessInX0(),
+						       parameters.scatteringAngles(*m), 
 						       energyLoss,
-						       (**m).materialEffects()->associatedSurface(),
+						       m->materialEffects()->associatedSurface(),
 						       typeMaterial);
 		    }
 		}
 		else				// no meot for special calo scattering centres
 		{
-		    if ((**m).numberDoF())	// fitted scatterer
+		    if (m->numberDoF())	// fitted scatterer
 		    {
 			materialEffects	=
-			    new MaterialEffectsOnTrack((**m).materialEffects()->thicknessInX0(),
-						       parameters.scatteringAngles(**m,scatter), 
-						       (**m).materialEffects()->associatedSurface(),
+			    new MaterialEffectsOnTrack(m->materialEffects()->thicknessInX0(),
+						       parameters.scatteringAngles(*m,scatter), 
+						       m->materialEffects()->associatedSurface(),
 						       typeMaterial);
 			++scatter;
 		    }
 		    else			// unfitted (leading material)
 		    {
 			materialEffects	=
-			    new MaterialEffectsOnTrack((**m).materialEffects()->thicknessInX0(),
-						       parameters.scatteringAngles(**m), 
-						       (**m).materialEffects()->associatedSurface(),
+			    new MaterialEffectsOnTrack(m->materialEffects()->thicknessInX0(),
+						       parameters.scatteringAngles(*m), 
+						       m->materialEffects()->associatedSurface(),
 						       typeMaterial);
 		    }
 		}
@@ -338,22 +332,22 @@ FitProcedure::constructTrack (const std::list<FitMeasurement*>&			measurements,
 	    else
 	    {
 		*m_log << MSG::WARNING <<" deprecated TrackStateOnSurface::InertMaterial" << endmsg;
-		materialEffects	= (**m).materialEffects()->clone();
+		materialEffects	= m->materialEffects()->clone();
 		typePattern.set(TrackStateOnSurface::InertMaterial);
 	    }
 	}
 
 	// additional perigee (e.g. at MS entrance)
-	if ((**m).isPerigee())
+	if (m->isPerigee())
 	{
 	    typePattern.set(TrackStateOnSurface::Perigee);
 	}
 	
 	// or alignment effects
-	else if ((**m).alignmentEffects())
+	else if (m->alignmentEffects())
 	{
-	    const AlignmentEffectsOnTrack&	AEOT	= *(**m).alignmentEffects();
-	    unsigned align				= (**m).alignmentParameter() - 1;
+	    const AlignmentEffectsOnTrack&	AEOT	= *m->alignmentEffects();
+	    unsigned align				= m->alignmentParameter() - 1;
 
             *m_log << MSG::VERBOSE  <<" Fitprocedure AEOT input deltaTranslation " << AEOT.deltaTranslation() << " deltaAngle " << AEOT.deltaAngle() << " output Trans " << parameters.alignmentOffset(align) << " deltaAngle " << parameters.alignmentAngle(align) << endmsg; 
 	    alignmentEffects				=
@@ -362,14 +356,14 @@ FitProcedure::constructTrack (const std::list<FitMeasurement*>&			measurements,
 						 parameters.alignmentAngle(align),
 						 AEOT.sigmaDeltaAngle(),
 						 AEOT.vectorOfAffectedTSOS(),
-						 (**m).surface());
+						 m->surface());
 	    typePattern.set(TrackStateOnSurface::Alignment);
 	}
 	
 	// passive types: hole for now
-	else if ((**m).isPassive())
+	else if (m->isPassive())
 	{
-	    if ((**m).type() == hole)		typePattern.set(TrackStateOnSurface::Hole);
+	    if (m->type() == hole)		typePattern.set(TrackStateOnSurface::Hole);
 	}
     }
 
@@ -406,7 +400,7 @@ FitProcedure::constructTrack (const std::list<FitMeasurement*>&			measurements,
 const FitProcedureQuality&
 FitProcedure::execute(bool				asymmetricCaloEnergy,
 		      MsgStream&			log,
-		      std::list<FitMeasurement*>&	measurements,
+		      std::vector<FitMeasurement*>&	measurements,
 		      FitParameters*&			parameters,
 		      const FitQuality*			perigeeQuality,
 		      bool				for_iPatTrack)
@@ -791,10 +785,8 @@ FitProcedure::setMinIterations (int minIter)
     if (m_minIter > m_maxIter) m_maxIter = m_minIter;
 }
 
-//<<<<<< PRIVATE MEMBER FUNCTION DEFINITIONS                            >>>>>>
-
 void
-FitProcedure::calculateChiSq(std::list<FitMeasurement*>& measurements)
+FitProcedure::calculateChiSq(std::vector<FitMeasurement*>& measurements)
 {
     // convergence criterion
     const double dChisqConv = 0.025;
@@ -804,41 +796,39 @@ FitProcedure::calculateChiSq(std::list<FitMeasurement*>& measurements)
     m_chiSq		= 0.;
     double driftResidual= 0.;
     double DSqMax	= 0.;
-    for (std::list<FitMeasurement*>::iterator m = measurements.begin();
-	 m != measurements.end();
-	 ++m)
+    for (auto m : measurements)
     {
-	if (! (**m).numberDoF()) continue;
-	// if ((**m).isPerigee())
+	if (! m->numberDoF()) continue;
+	// if (m->isPerigee())
 	// {
 	//     m_chiSq += m_fitMatrices->perigeeChiSquared();
 	//     continue;
 	// }
 	
-	double residual	=  (**m).residual();
+	double residual	=  m->residual();
 	double DiffSq	=  residual*residual;
 	m_chiSq	+=  DiffSq;             
-	if ((**m).isPositionMeasurement())
+	if (m->isPositionMeasurement())
 	{
-	    if ((**m).isDrift())  driftResidual += residual;
+	    if (m->isDrift())  driftResidual += residual;
 	    if (DiffSq > DSqMax)
 	    {
 		DSqMax			= DiffSq;
-		m_worstMeasurement	= (**m).hitIndex() + 1;
+		m_worstMeasurement	= m->hitIndex() + 1;
 		m_chiSqWorst		= std::min(999.,DSqMax);
 	    }
 	}
-	if ((**m).is2Dimensional())
+	if (m->is2Dimensional())
 	{
-	    residual		=  (**m).residual2();
+	    residual		=  m->residual2();
 	    DiffSq		=  residual*residual;
 	    m_chiSq	+=  DiffSq;
-	    if ((**m).isPositionMeasurement())
+	    if (m->isPositionMeasurement())
 	    {
 		if (DiffSq > DSqMax)
 		{
 		    DSqMax		= DiffSq;
-		    m_worstMeasurement	= (**m).hitIndex() + 1;
+		    m_worstMeasurement	= m->hitIndex() + 1;
 		    m_chiSqWorst	= std::min(999.,DSqMax);
 		}
 	    }
@@ -932,16 +922,14 @@ FitProcedure::calculateChiSq(std::list<FitMeasurement*>& measurements)
 
 	(**measurements.begin()).printHeading(*m_log);
 	int n = 0;
-	for (std::list<FitMeasurement*>::iterator m = measurements.begin();
-	     m != measurements.end();
-	     ++m)
+	for (auto m : measurements)
 	{
 	    *m_log << std::setiosflags(std::ios::fixed)
 		   << std::setw(3) << ++n;
-	    if ((**m).isPerigee())
+	    if (m->isPerigee())
 	    {
 		*m_log << " perigee     ";
-		// if ((**m).numberDoF())
+		// if (m->numberDoF())
 		//     *m_log << std::setw(14) << std::setprecision(3)
 		// 	   << m_fitMatrices->perigeeChiSquared()
 		// 	   << "  (chi2 for 5 degF) ";
@@ -949,7 +937,7 @@ FitProcedure::calculateChiSq(std::list<FitMeasurement*>& measurements)
 	    }
 	    else
 	    {
-		(**m).print(*m_log);
+		m->print(*m_log);
 	    }
 	}
     }
@@ -1011,7 +999,7 @@ FitProcedure::calculateChiSq(std::list<FitMeasurement*>& measurements)
 }
 
 ToolHandle<IIntersector>&
-FitProcedure::chooseIntersector (std::list<FitMeasurement*>&	measurements,
+FitProcedure::chooseIntersector (std::vector<FitMeasurement*>&	measurements,
 				 const FitParameters&		parameters) const
 {
     if (m_lineFit) return m_straightLineIntersector;
@@ -1020,7 +1008,7 @@ FitProcedure::chooseIntersector (std::list<FitMeasurement*>&	measurements,
     // ToolHandle<IIntersector>& intersector = m_rungeKuttaIntersector;
 
     // solenoidal intersector must start close to origin with last measurement inside valid region
-    for (std::list<FitMeasurement*>::reverse_iterator m = measurements.rbegin();
+    for (std::vector<FitMeasurement*>::reverse_iterator m = measurements.rbegin();
 	 m != measurements.rend();
 	 ++m)
     {
@@ -1033,7 +1021,7 @@ FitProcedure::chooseIntersector (std::list<FitMeasurement*>&	measurements,
 }
 
 void
-FitProcedure::reportQuality(const std::list<FitMeasurement*>&	measurements,
+FitProcedure::reportQuality(const std::vector<FitMeasurement*>&	measurements,
 			    const FitParameters&		parameters) const
 {
     if (! m_fitQuality) return;
diff --git a/Tracking/TrkFitter/TrkiPatFitterUtils/src/FitProcedureQuality.cxx b/Tracking/TrkFitter/TrkiPatFitterUtils/src/FitProcedureQuality.cxx
index b57b4d10e65d7aabdea11995beb302a757fd1bd3..62446159f915d4db016e057cb078acfce7caa1da 100755
--- a/Tracking/TrkFitter/TrkiPatFitterUtils/src/FitProcedureQuality.cxx
+++ b/Tracking/TrkFitter/TrkiPatFitterUtils/src/FitProcedureQuality.cxx
@@ -6,15 +6,11 @@
  quality variables produced during fit procedure
  ***************************************************************************/
 
-//<<<<<< INCLUDES                                                       >>>>>>
-
 #include <iostream>
 #include <iomanip>
 #include "GaudiKernel/MsgStream.h"
 #include "TrkiPatFitterUtils/FitProcedureQuality.h"
 
-//<<<<<< CLASS STRUCTURE INITIALIZATION                                 >>>>>>
-
 namespace Trk{
   
 void
diff --git a/Tracking/TrkFitter/TrkiPatFitterUtils/src/MeasurementProcessor.cxx b/Tracking/TrkFitter/TrkiPatFitterUtils/src/MeasurementProcessor.cxx
index 1a86db7ec527760589c3772a8784c33f115bd542..bd48e5140849b7f68d42145d695376d2921701ff 100755
--- a/Tracking/TrkFitter/TrkiPatFitterUtils/src/MeasurementProcessor.cxx
+++ b/Tracking/TrkFitter/TrkiPatFitterUtils/src/MeasurementProcessor.cxx
@@ -23,14 +23,11 @@
 
 namespace Trk{
   
-//<<<<<< CLASS STRUCTURE INITIALIZATION                                 >>>>>>
-
-
 // constructor
 MeasurementProcessor::MeasurementProcessor (bool				asymmetricCaloEnergy,
 					    Amg::MatrixX&			/*derivativeMatrix*/,
 					    ToolHandle<IIntersector>&		intersector,
-					    std::list<FitMeasurement*>&		measurements,
+					    std::vector<FitMeasurement*>&		measurements,
 					    FitParameters*			parameters,
 					    ToolHandle<IIntersector>&		rungeKuttaIntersector,
 					    const ToolHandle<IPropagator>&	stepPropagator,
@@ -47,8 +44,8 @@ MeasurementProcessor::MeasurementProcessor (bool				asymmetricCaloEnergy,
 	m_intersector			(intersector),
 	m_largeDeltaD0			(50.*Gaudi::Units::mm),
 	m_largeDeltaPhi0		(0.05),	
-	m_measurements			(measurements),
         //m_minDistanceForAngle		(2.*Gaudi::Units::mm),
+	m_measurements                  (measurements),
 	m_numericDerivatives		(false),
 	m_parameters			(parameters),
 	m_phiInstability		(false),
@@ -78,27 +75,25 @@ MeasurementProcessor::MeasurementProcessor (bool				asymmetricCaloEnergy,
     if(m_useStepPropagator==2)  m_stepField = Trk::MagneticFieldProperties(Trk::FastField);
 
     
-    for (std::list<FitMeasurement*>::iterator m = m_measurements.begin();
-	 m != m_measurements.end();
-	 ++m)
+    for (auto m : m_measurements)
     {
-	if (! (**m).numberDoF())		continue;
-	if ((**m).isAlignment()) m_alignments.push_back(*m);
-	// if ((**m).isDrift())	haveDrift	= true;
-	if ((**m).isPositionMeasurement())	++numberPositionMeas;
-	// if ((**m).isPseudo())			++numberPseudo;
-	if ((**m).isScatterer()) m_scatterers.push_back(*m);
+	if (! m->numberDoF())		continue;
+	if (m->isAlignment()) m_alignments.push_back(m);
+	// if (m->isDrift())	haveDrift	= true;
+	if (m->isPositionMeasurement())	++numberPositionMeas;
+	// if (m->isPseudo())			++numberPseudo;
+	if (m->isScatterer()) m_scatterers.push_back(m);
 
 	// cache some variables when we fit calo energy deposit
-	if (! (**m).isEnergyDeposit() || ! m_parameters->fitMomentum())	continue;
-	m_caloEnergyMeasurement	= *m;
+	if (! m->isEnergyDeposit() || ! m_parameters->fitMomentum())	continue;
+	m_caloEnergyMeasurement	= m;
 	if (numberPositionMeas < 5)
 	{
 	    m_asymmetricCaloEnergy = false;
 	    m_caloEnergyMeasurement->setSigmaSymmetric();
 	}
 	m_qOverPbeforeCalo      = m_parameters->qOverP();
-	m_qOverPafterCalo	= (**m).qOverP();
+	m_qOverPafterCalo	= m->qOverP();
 	if (m_qOverPbeforeCalo*m_qOverPafterCalo < 0.) m_qOverPafterCalo = m_qOverPbeforeCalo;
 	m_parameters->qOverP1(m_qOverPafterCalo);
 	// std::cout << numberPositionMeas << " calo energy deposit "
@@ -126,8 +121,6 @@ MeasurementProcessor::~MeasurementProcessor (void)
     delete m_vertexIntersect;
 }
 
-//<<<<<< MEMBER PUBLIC FUNCTION DEFINITIONS                             >>>>>>
-
 bool
 MeasurementProcessor::calculateDerivatives(void)
 {
@@ -185,65 +178,63 @@ MeasurementProcessor::calculateDerivatives(void)
     }
 
     // loop over measurements to compute derivatives:
-    for (std::list<FitMeasurement*>::iterator m = m_measurements.begin();
-	 m != m_measurements.end();
-	 ++m)
+    for (auto m : m_measurements)
     {
 	// strip detector types
-	if ((**m).isCluster())
+	if (m->isCluster())
 	{
-	    clusterDerivatives((**m).numberDoF(), **m);
+	    clusterDerivatives(m->numberDoF(), *m);
 	}
-	else if ((**m).isDrift() || (**m).isPerigee() || (**m).isPseudo()) // else drift circles
+	else if (m->isDrift() || m->isPerigee() || m->isPseudo()) // else drift circles
 	{
-            const TrackSurfaceIntersection& intersection = (**m).intersection(FittedTrajectory);
+            const TrackSurfaceIntersection& intersection = m->intersection(FittedTrajectory);
 	    Amg::Vector3D* driftDirection =
-		new Amg::Vector3D((**m).sensorDirection().cross(intersection.direction()));
+		new Amg::Vector3D(m->sensorDirection().cross(intersection.direction()));
 	    *driftDirection	= driftDirection->unit();
-	    (**m).minimizationDirection(driftDirection);
-	    driftDerivatives((**m).numberDoF(), **m);
+	    m->minimizationDirection(driftDirection);
+	    driftDerivatives(m->numberDoF(), *m);
 	}
-	else if ((**m).isVertex())
+	else if (m->isVertex())
 	{
-	    const TrackSurfaceIntersection& intersection = (**m).intersection(FittedTrajectory);
+	    const TrackSurfaceIntersection& intersection = m->intersection(FittedTrajectory);
 	    Amg::Vector3D* minimizationDirection =
-		new Amg::Vector3D((**m).sensorDirection().cross(intersection.direction()));
+		new Amg::Vector3D(m->sensorDirection().cross(intersection.direction()));
 	    *minimizationDirection	= minimizationDirection->unit();
-	    (**m).minimizationDirection(minimizationDirection);
-	    (**m).derivative(D0,(**m).weight()*(m_cosPhi0*(**m).minimizationDirection().y() -
-						m_sinPhi0*(**m).minimizationDirection().x()));
-	    if ((**m).is2Dimensional())
-		(**m).derivative2(Z0,(**m).weight2()*(**m).sensorDirection().z());
+	    m->minimizationDirection(minimizationDirection);
+	    m->derivative(D0,m->weight()*(m_cosPhi0*m->minimizationDirection().y() -
+						m_sinPhi0*m->minimizationDirection().x()));
+	    if (m->is2Dimensional())
+		m->derivative2(Z0,m->weight2()*m->sensorDirection().z());
 	}
-	else if (! (**m).numberDoF())
+	else if (! m->numberDoF())
 	{
 	    continue;
 	}
-	else if ((**m).isScatterer())
+	else if (m->isScatterer())
 	{
-	    unsigned param	= (**m).lastParameter() - 2;
-	    (**m).derivative(param,(**m).weight() *
-			     (**m).intersection(FittedTrajectory).direction().perp());
-	    (**m).derivative2(++param,(**m).weight());
+	    unsigned param	= m->lastParameter() - 2;
+	    m->derivative(param,m->weight() *
+			     m->intersection(FittedTrajectory).direction().perp());
+	    m->derivative2(++param,m->weight());
 	}
-	else if ((**m).isAlignment())
+	else if (m->isAlignment())
 	{
 	    // std::cout << " set alignment derivatives: "
-	    // 	      << "   alignmentParameter " << (**m).alignmentParameter()
-	    // 	      << "   firstParameter " << (**m).firstParameter()
-	    // 	      << "   lastParameter " << (**m).lastParameter()
+	    // 	      << "   alignmentParameter " << m->alignmentParameter()
+	    // 	      << "   firstParameter " << m->firstParameter()
+	    // 	      << "   lastParameter " << m->lastParameter()
 	    // 	      << std::endl;
-	    unsigned param	= (**m).firstParameter();
-	    (**m).derivative(param,(**m).weight());
-	    (**m).derivative2(++param,(**m).weight2());
+	    unsigned param	= m->firstParameter();
+	    m->derivative(param,m->weight());
+	    m->derivative2(++param,m->weight2());
 	}
-	else if ((**m).isEnergyDeposit())
+	else if (m->isEnergyDeposit())
 	{
 	    double E0           = 1./std::abs(m_qOverPbeforeCalo);
             double E1           = 1./std::abs(m_qOverPafterCalo);
-	    double weight	= (**m).weight();
-	    (**m).derivative(QOverP0, weight*E0/(m_qOverPbeforeCalo*Gaudi::Units::TeV));
-	    (**m).derivative(QOverP1,-weight*E1/(m_qOverPafterCalo*Gaudi::Units::TeV));
+	    double weight	= m->weight();
+	    m->derivative(QOverP0, weight*E0/(m_qOverPbeforeCalo*Gaudi::Units::TeV));
+	    m->derivative(QOverP1,-weight*E1/(m_qOverPafterCalo*Gaudi::Units::TeV));
 	}
 	else
 	{
@@ -350,47 +341,45 @@ MeasurementProcessor::calculateResiduals(void)
 {
     int nAlign		= 0;
     int nScat		= 0;
-    for (std::list<FitMeasurement*>::iterator m = m_measurements.begin();
-	 m != m_measurements.end();
-	 ++m)
+    for (auto m : m_measurements)
     {
-	if (! (**m).numberDoF())	continue;
+	if (! (*m).numberDoF())	continue;
 
 	// special measurements to constrain additional parameters
-	if (! (**m).isPositionMeasurement())
+	if (! m->isPositionMeasurement())
 	{
-	    if ((**m).isScatterer())	// scattering centres
+	    if (m->isScatterer())	// scattering centres
 	    {
-		double phiResidual	= -(**m).weight()*m_parameters->scattererPhi(nScat) *
-					  (**m).intersection(FittedTrajectory).direction().perp();
-		(**m).residual(phiResidual);
-		double thetaResidual	= -(**m).weight()*m_parameters->scattererTheta(nScat);
-		(**m).residual2(thetaResidual);
+		double phiResidual	= -m->weight()*m_parameters->scattererPhi(nScat) *
+					  m->intersection(FittedTrajectory).direction().perp();
+		m->residual(phiResidual);
+		double thetaResidual	= -m->weight()*m_parameters->scattererTheta(nScat);
+		(*m).residual2(thetaResidual);
 		++nScat;
 	    }
-	    else if ((**m).isAlignment())	// alignment uncertainties
+	    else if ((*m).isAlignment())	// alignment uncertainties
 	    {
-		(**m).residual(-(**m).weight()   * (m_parameters->alignmentAngle(nAlign) -
+		(*m).residual(-m->weight()   * (m_parameters->alignmentAngle(nAlign) -
 						  m_parameters->alignmentAngleConstraint(nAlign)));
-		(**m).residual2(-(**m).weight2() * (m_parameters->alignmentOffset(nAlign) -
+		(*m).residual2(-m->weight2() * (m_parameters->alignmentOffset(nAlign) -
 						    m_parameters->alignmentOffsetConstraint(nAlign)));
 		++nAlign;
 	    }
-	    else if ((**m).isEnergyDeposit())
+	    else if (m->isEnergyDeposit())
 	    {
 		// Add the energy loss as a measurement
 		double E0           = 1./std::abs(m_qOverPbeforeCalo);
 		double E1           = 1./std::abs(m_qOverPafterCalo);
-		double residual	= (**m).weight()*(E0 - E1 - (**m).energyLoss());
-		(**m).residual(residual);
+		double residual	= m->weight()*(E0 - E1 - m->energyLoss());
+		m->residual(residual);
             
 		// 	    std::cout << std::setiosflags(std::ios::fixed)
 		// 		      << " calo residual " << std::setw(8) << std::setprecision(2)
-		// 		      << (**m).residual()
+		// 		      << m->residual()
 		// 		      << " (in GeV):" << std::setw(8) << std::setprecision(3)
-		// 		      << (E0 - E1 - (**m).energyLoss())/Gaudi::Units::GeV
+		// 		      << (E0 - E1 - m->energyLoss())/Gaudi::Units::GeV
 		// 		      << std::endl;
-		// 	    const TrackSurfaceIntersection& intersection = (**m).intersection(FittedTrajectory);
+		// 	    const TrackSurfaceIntersection& intersection = m->intersection(FittedTrajectory);
 		// 	    double fittedLoss = (std::abs(E0/Gaudi::Units::GeV) - std::abs(E1/Gaudi::Units::GeV)) * intersection.direction().perp();
 		// 	    std::cout << std::setiosflags(std::ios::fixed)
 		// 		      << "  pT"                     
@@ -402,7 +391,7 @@ MeasurementProcessor::calculateResiduals(void)
 		// 		      << std::setw(8) << std::setprecision(1) << intersection.position().z()
 		// 		      << "     pT loss: measured "
 		// 		      << std::setw(9) << std::setprecision(3)
-		// 		      << (**m).energyLoss()*intersection.direction().perp()/Gaudi::Units::GeV
+		// 		      << m->energyLoss()*intersection.direction().perp()/Gaudi::Units::GeV
 		// 		      << "  fitted "                     
 		// 		      << std::setw(9) << std::setprecision(3) << fittedLoss
 		// 		      << std::endl;
@@ -411,111 +400,111 @@ MeasurementProcessor::calculateResiduals(void)
 	}
 
 	// position measurements
-	const TrackSurfaceIntersection& intersection	= (**m).intersection(FittedTrajectory);
-	const Amg::Vector3D& minimizationDirection	= (**m).minimizationDirection();
-	Amg::Vector3D offset 				= (**m).position() - intersection.position();
-	if ((**m).isCluster())		// strip detector types
+	const TrackSurfaceIntersection& intersection	= m->intersection(FittedTrajectory);
+	const Amg::Vector3D& minimizationDirection	= m->minimizationDirection();
+	Amg::Vector3D offset 				= m->position() - intersection.position();
+	if (m->isCluster())		// strip detector types
 	{
-	    double residual	= (**m).weight() * minimizationDirection.dot(offset);
-	    if ((**m).alignmentParameter())
+	    double residual	= m->weight() * minimizationDirection.dot(offset);
+	    if (m->alignmentParameter())
 	    {
 		// propagate to residual using derivatives
-		unsigned param  =  (**m).alignmentParameter() - 1;
+		unsigned param  =  m->alignmentParameter() - 1;
 		unsigned deriv 	=  m_parameters->numberParameters() - 2*m_parameters->numberAlignments() + 2*param;
-		residual	-= m_parameters->alignmentAngle(param)  * (**m).derivative(deriv) +
-				   m_parameters->alignmentOffset(param) * (**m).derivative(deriv+1);
+		residual	-= m_parameters->alignmentAngle(param)  * m->derivative(deriv) +
+				   m_parameters->alignmentOffset(param) * m->derivative(deriv+1);
 		
-		// FitMeasurement* fm	= m_alignments[(**m).alignmentParameter()-1];
-		// std::cout << " cluster resid:  measurement.alignmentParameter " << (**m).alignmentParameter()
+		// FitMeasurement* fm	= m_alignments[m->alignmentParameter()-1];
+		// std::cout << " cluster resid:  measurement.alignmentParameter " << m->alignmentParameter()
 		// 	  << "   at z " << fm->surface()->center().z()
 		// 	  << "   param " << param
 		// 	  << "   minimizationDirection.z() " << minimizationDirection.z()
 		// 	  << "   angle "
 		// 	  << m_parameters->alignmentAngle(param)
 		// 	  << " angle resid "
-		// 	  << m_parameters->alignmentAngle(param)*(**m).derivative(deriv) 
+		// 	  << m_parameters->alignmentAngle(param)*m->derivative(deriv) 
 		// 	  << "   offset "
 		// 	  << m_parameters->alignmentOffset(param)
 		// 	  << " offset resid"
-		// 	  << m_parameters->alignmentOffset(param)*(**m).derivative(deriv+1)
+		// 	  << m_parameters->alignmentOffset(param)*m->derivative(deriv+1)
 		// 	  << "   residual "	<< residual
 		// 	  << std::endl;
 
-		if ((**m).alignmentParameter2())
+		if (m->alignmentParameter2())
 		{
 		    // propagate to residual using derivatives
-		    param	=  (**m).alignmentParameter2() - 1;
+		    param	=  m->alignmentParameter2() - 1;
 		    deriv	=  m_parameters->numberParameters() - 2*m_parameters->numberAlignments() + 2*param;
-		    residual	-= m_parameters->alignmentAngle(param)  * (**m).derivative(deriv) +
-				   m_parameters->alignmentOffset(param) * (**m).derivative(deriv+1);
+		    residual	-= m_parameters->alignmentAngle(param)  * m->derivative(deriv) +
+				   m_parameters->alignmentOffset(param) * m->derivative(deriv+1);
 		}
 	    }
-	    (**m).residual(residual);
-	    if (! (**m).is2Dimensional()) continue;
-	    double residual2	=  (**m).weight2()*(**m).sensorDirection().dot(offset);
-	    (**m).residual2(residual2);
+	    m->residual(residual);
+	    if (! m->is2Dimensional()) continue;
+	    double residual2	=  m->weight2()*m->sensorDirection().dot(offset);
+	    m->residual2(residual2);
 	}
-	else if ((**m).isDrift() || (**m).isPerigee())	// else drift circles (perigee is similar)
+	else if (m->isDrift() || m->isPerigee())	// else drift circles (perigee is similar)
 	{
-	    double residual 	= (**m).weight() *
-				  (minimizationDirection.dot(offset) + (**m).signedDriftDistance());
-	    if ((**m).alignmentParameter())
+	    double residual 	= m->weight() *
+				  (minimizationDirection.dot(offset) + m->signedDriftDistance());
+	    if (m->alignmentParameter())
 	    {
 		// propagate to residual using derivatives
-		unsigned param  =  (**m).alignmentParameter() - 1;
+		unsigned param  =  m->alignmentParameter() - 1;
 		int deriv 	=  m_parameters->numberParameters() - 2*m_parameters->numberAlignments() + 2*param;
-		residual	-= m_parameters->alignmentAngle(param)  * (**m).derivative(deriv) +
-				   m_parameters->alignmentOffset(param) * (**m).derivative(deriv+1);
+		residual	-= m_parameters->alignmentAngle(param)  * m->derivative(deriv) +
+				   m_parameters->alignmentOffset(param) * m->derivative(deriv+1);
 		if (deriv != m_parameters->firstAlignmentParameter())
 		    // std::cout << " firstAlignmentParameter " << m_parameters->firstAlignmentParameter() + 2*param
 		    // 	      << " deriv " << deriv << std::endl;
 		
 		// FitMeasurement* fm	= m_alignments[param];
-		// std::cout << " drift resid:  measurement.alignmentParameter " << (**m).alignmentParameter()
+		// std::cout << " drift resid:  measurement.alignmentParameter " << m->alignmentParameter()
 		// 	  << "   at z " << fm->surface()->center().z()
 		// 	  << "   param " << param
 		// 	  << "   driftDirection.z() " << minimizationDirection.z()
 		// 	  << "   angle "
 		// 	  << m_parameters->alignmentAngle(param)
 		// 	  << " angle resid "
-		// 	  << m_parameters->alignmentAngle(param)*(**m).derivative(deriv) 
+		// 	  << m_parameters->alignmentAngle(param)*m->derivative(deriv) 
 		// 	  << "   offset "
 		// 	  << m_parameters->alignmentOffset(param)
 		// 	  << " offset resid"
-		// 	  << m_parameters->alignmentOffset(param)*(**m).derivative(deriv+1)
+		// 	  << m_parameters->alignmentOffset(param)*m->derivative(deriv+1)
 		// 	  << "   residual "	<< residual
 		// 	  << std::endl;
 
-		if ((**m).alignmentParameter2())
+		if (m->alignmentParameter2())
 		{
 		    // propagate to residual using derivatives
-		    param	=  (**m).alignmentParameter2() - 1;
+		    param	=  m->alignmentParameter2() - 1;
 		    deriv	=  m_parameters->numberParameters() - 2*m_parameters->numberAlignments() + 2*param;
-		    residual	-= m_parameters->alignmentAngle(param)  * (**m).derivative(deriv) +
-				   m_parameters->alignmentOffset(param) * (**m).derivative(deriv+1);
+		    residual	-= m_parameters->alignmentAngle(param)  * m->derivative(deriv) +
+				   m_parameters->alignmentOffset(param) * m->derivative(deriv+1);
 		}
 	    }
-	    (**m).residual(residual);
-	    // std::cout << " residual " << residual*(**m).sigma()
-	    // 	      << "  drift distance " << (**m).signedDriftDistance() << std::endl;
+	    m->residual(residual);
+	    // std::cout << " residual " << residual*m->sigma()
+	    // 	      << "  drift distance " << m->signedDriftDistance() << std::endl;
 	}
-	else if ((**m).isPseudo())	// else pseudo measurement
+	else if (m->isPseudo())	// else pseudo measurement
 	{
-	    double residual	= (**m).weight() * minimizationDirection.dot(offset);
-	    (**m).residual(residual);
-	    if (! (**m).is2Dimensional()) continue;
-	    double residual2	= (**m).weight2() * (**m).sensorDirection().dot(offset);
-	    (**m).residual2(residual2);
+	    double residual	= m->weight() * minimizationDirection.dot(offset);
+	    m->residual(residual);
+	    if (! m->is2Dimensional()) continue;
+	    double residual2	= m->weight2() * m->sensorDirection().dot(offset);
+	    m->residual2(residual2);
 	}
-	else if ((**m).isVertex())
+	else if (m->isVertex())
 	{
-	    double residual	=  (**m).weight() * (minimizationDirection.x()*offset.x() +
+	    double residual	=  m->weight() * (minimizationDirection.x()*offset.x() +
 						     minimizationDirection.y()*offset.y()) /
 				   minimizationDirection.perp() ;
-	    (**m).residual(residual);
-	    if (! (**m).is2Dimensional()) continue;
-	    double residual2= (**m).weight2() * (**m).sensorDirection().dot(offset);
-	    (**m).residual2(residual2);
+	    m->residual(residual);
+	    if (! m->is2Dimensional()) continue;
+	    double residual2= m->weight2() * m->sensorDirection().dot(offset);
+	    m->residual2(residual2);
 	}
     }
 }
@@ -651,14 +640,12 @@ MeasurementProcessor::propagationDerivatives(void)
 {
     // compute additional derivatives when needed for covariance propagation.
     //   loop over measurements:
-    for (std::list<FitMeasurement*>::iterator m = m_measurements.begin();
-	 m != m_measurements.end();
-	 ++m)
+  for (auto m : m_measurements)
     {
 	// compute the D0 and Z0 derivs that don't already exist
-	if (! (**m).isPositionMeasurement() || (**m).numberDoF() > 1) continue;
+	if (! m->isPositionMeasurement() || m->numberDoF() > 1) continue;
 	int derivativeFlag;
-	if ((**m).numberDoF())
+	if (m->numberDoF())
 	{
 	    derivativeFlag	= 0;
 	}
@@ -667,19 +654,17 @@ MeasurementProcessor::propagationDerivatives(void)
 	    derivativeFlag	= 2;
 	}
 
-	if ((**m).isCluster())
+	if (m->isCluster())
 	{
-	    clusterDerivatives(derivativeFlag, **m);
+	    clusterDerivatives(derivativeFlag, *m);
 	}
-	else if ((**m).isDrift() || (**m).isPerigee() || (**m).isPseudo())
+	else if (m->isDrift() || m->isPerigee() || m->isPseudo())
 	{
-	    driftDerivatives(derivativeFlag, **m);
+	    driftDerivatives(derivativeFlag, *m);
 	}
     }
 }
 
-//<<<<<< MEMBER PRIVATE FUNCTION DEFINITIONS                            >>>>>>
-
 void
 MeasurementProcessor::clusterDerivatives(int derivativeFlag, const FitMeasurement& measurement)
 {
@@ -1076,7 +1061,7 @@ MeasurementProcessor::extrapolateToMeasurements(ExtrapolationType type)
     const Surface* surface				= 0;
     
     // careful: use RungeKutta for extrapolation to vertex measurement
-    std::list<FitMeasurement*>::iterator m = m_measurements.begin();
+    std::vector<FitMeasurement*>::iterator m = m_measurements.begin();
     if ((**m).isVertex())
     {
         if (m_useStepPropagator==99)