diff --git a/sm/CMakeLists.txt b/sm/CMakeLists.txt
index 8a7b3efc91a5c8bd84b33a58a573592b34b3d1e9..0824a24356663b6f702ba11244bfdd4ab46c5528 100644
--- a/sm/CMakeLists.txt
+++ b/sm/CMakeLists.txt
@@ -162,6 +162,7 @@ SET(csm_sources
 ./csm/structprior/ConstraintManager.cpp
 ./csm/structprior/Constraint.cpp
 ./csm/structprior/MeasurementsLikelihood.cpp
+./csm/structprior/Minimizer.cpp
 ./lib/egsl/egsl.c
 ./lib/egsl/egsl_conversions.c
 ./lib/egsl/egsl_misc.c
diff --git a/sm/csm/structprior/MeasurementsLikelihood.cpp b/sm/csm/structprior/MeasurementsLikelihood.cpp
index 55c606966f2e09517fe250d2339505435428338d..8bf0a58011a17b37382c3e76706cf78d695de4ac 100644
--- a/sm/csm/structprior/MeasurementsLikelihood.cpp
+++ b/sm/csm/structprior/MeasurementsLikelihood.cpp
@@ -3,6 +3,7 @@
 MeasurementsLikelihood::MeasurementsLikelihood(int likelihood_function, int measurements_number)
 {
 	function_type = likelihood_function;
+	
 	error = 0;
 	grad.resize(measurements_number);
 	hess.resize(measurements_number);
@@ -27,7 +28,7 @@ void MeasurementsLikelihood::ComputeAlphaLikelihoods(std::vector<double> x_vecto
 	if (hess.size() != 0)
 		hess.clear();
 		
-	// may be redundant, it's added in case some measurements are pre-discarded
+	// may be redundant, it's added in case some measurements are pre-discarded or something
 	grad.resize(n);
 	hess.resize(n);
 	for (int i=0;i<n;i++)
@@ -60,8 +61,6 @@ void MeasurementsLikelihood::ComputeAlphaLikelihoods(std::vector<double> x_vecto
 				}
 			}
 			
-			
-			
 		}
 		
 	
@@ -72,6 +71,47 @@ void MeasurementsLikelihood::ComputeAlphaLikelihoods(std::vector<double> x_vecto
 	
 	
 	}
+	
+}
+
+
+void MeasurementsLikelihood::ComputeRangeLikelihoods(std::vector<double> x_vector, std::vector<double> ranges0, std::vector<double> ranges_covs)
+{
+
+	if (function_type == L2)
+	{
+	
+	
+	
+	
+	
+	}
+	
+	
+	
+	if (function_type == L1)
+	{
+	
+	
+	
+	
+	
+	}
+	
+	
+
+
+
 
 
 }
+
+
+
+
+
+
+
+
+
+
diff --git a/sm/csm/structprior/MeasurementsLikelihood.h b/sm/csm/structprior/MeasurementsLikelihood.h
index 21da7f83a20f46e04875b76478d8ca759d46ae6c..6c13dbb3a701924a74f2a7c90ebcc91287e88e24 100644
--- a/sm/csm/structprior/MeasurementsLikelihood.h
+++ b/sm/csm/structprior/MeasurementsLikelihood.h
@@ -25,8 +25,8 @@ public:
 	std::vector<std::vector<double> > hess;
 	//methods
 public:
-	void ComputeAlphaLikelihoods(std::vector<double> x_vector, std::vector<double> alphas0, std::vector<double> alphas_covs );
-	
+	void ComputeAlphaLikelihoods(std::vector<double> x_vector, std::vector<double> alphas0, std::vector<double> alphas_covs);
+	void ComputeRangeLikelihoods(std::vector<double> x_vector, std::vector<double> ranges0, std::vector<double> ranges_covs);
 
 };
 
diff --git a/sm/csm/structprior/structprior_test.cpp b/sm/csm/structprior/structprior_test.cpp
index c73c6c012ba885c433ed978b1322549892400b34..eb723b239bd6bd1cbb678d7144e6657dd12bc325 100644
--- a/sm/csm/structprior/structprior_test.cpp
+++ b/sm/csm/structprior/structprior_test.cpp
@@ -3,6 +3,7 @@
 
 #include "ConstraintManager.h"
 #include "MeasurementsLikelihood.h"
+#include "Minimizer.h"
 
 
 int main(int argc, const char** argv) 
@@ -35,7 +36,7 @@ int main(int argc, const char** argv)
 	int number_of_measurements = laserdata->nrays;
 	MeasurementsLikelihood f(L2,number_of_measurements);
 
-	
+	Minimizer minimizer;
 	//minimizer.Minimize(laserdata,f,cons_manager...)...