diff --git a/test.cpp b/test.cpp
index 974608479bd7f92d061782faa0718f6d177313e9..931a0349e17725e244fd38a1fe93902249998749 100644
--- a/test.cpp
+++ b/test.cpp
@@ -6,6 +6,67 @@
 #include "log.h"
 #include "normalize.h"
 
+void printDataVect(const std::vector<eis::DataPoint> in)
+{
+	for(const eis::DataPoint& res : in)
+			std::cout<<res.omega<<','<<res.im.real()<<','<<res.im.imag()<<'\n';
+}
+
+std::vector<eis::DataPoint> getSine()
+{
+	std::vector<eis::DataPoint> data;
+	for(size_t i = 0; i < 20; ++i)
+	{
+		eis::DataPoint point;
+		point.im = std::complex<fvalue>((sin(i/10.0)/static_cast<double>((i+16)/16))*10, (sin(i/10.0)/static_cast<double>((i+16)/16))*10);
+		point.omega = i;
+		data.push_back(point);
+	}
+	return data;
+}
+
+static const fvalue mocdata[25][3] = {
+	0.000000,17200.000000,0.000000,
+	41666.700000,2900.000000,-2.926830,
+	83333.300000,2900.000000,-1.463410,
+	125000.000000,2900.000000,-0.975610,
+	166667.000000,2900.000000,-0.731707,
+	208333.000000,2900.000000,-0.585366,
+	250000.000000,2900.000000,-0.487805,
+	291667.000000,2900.000000,-0.418118,
+	333333.000000,2900.000000,-0.365854,
+	375000.000000,2900.000000,-0.325203,
+	416667.000000,2900.000000,-0.292683,
+	458333.000000,2900.000000,-0.266075,
+	500000.000000,2900.000000,-0.243902,
+	541667.000000,2900.000000,-0.225141,
+	583333.000000,2900.000000,-0.209059,
+	625000.000000,2900.000000,-0.195122,
+	666667.000000,2900.000000,-0.182927,
+	708333.000000,2900.000000,-0.172166,
+	750000.000000,2900.000000,-0.162602,
+	791667.000000,2900.000000,-0.154044,
+	833333.000000,2900.000000,-0.146341,
+	875000.000000,2900.000000,-0.139373,
+	916667.000000,2900.000000,-0.133038,
+	958333.000000,2900.000000,-0.127253,
+	1000000.000000,2900.000000,-0.121951,
+};
+
+std::vector<eis::DataPoint> getMockData()
+{
+	std::vector<eis::DataPoint> data;
+
+	for(size_t i = 0; i < sizeof(mocdata)/sizeof(*mocdata); ++i)
+	{
+		eis::DataPoint point;
+		point.im = std::complex<fvalue>(mocdata[i][1], mocdata[i][2]);
+		point.omega = mocdata[i][0];
+		data.push_back(point);
+	}
+	return data;
+}
+
 void printComponants(eis::Model& model)
 {
 	eis::Log(eis::Log::DEBUG)<<"Compnants:";
@@ -104,6 +165,7 @@ void runSweepByIndex()
 
 void runRescale()
 {
+	std::cout<<__func__<<'\n';
 	std::vector<eis::DataPoint> data;
 	for(size_t i = 0; i < 10; ++i)
 	{
@@ -113,24 +175,72 @@ void runRescale()
 		data.push_back(point);
 	}
 
-	std::cout<<"original: ";
-	for(const eis::DataPoint& res : data)
-		std::cout<<res.omega<<','<<res.im.real()<<','<<res.im.imag()<<'\n';
+	std::cout<<"original:\n";
+	printDataVect(data);
 
 	data = eis::rescale(data, 5);
 
-	std::cout<<"rescaled: ";
-	for(const eis::DataPoint& res : data)
-		std::cout<<res.omega<<','<<res.im.real()<<','<<res.im.imag()<<'\n';
+	std::cout<<"rescaled:\n";
+	printDataVect(data);
+}
+
+void runReduce()
+{
+	std::cout<<__func__<<'\n';
+	std::vector<eis::DataPoint> data = getMockData();
+
+	std::cout<<"original: \n";
+	printDataVect(data);
+
+	data = reduceRegion(data);;
+
+	std::cout<<"reduced: \n";
+	printDataVect(data);
+}
+
+void runNormalize()
+{
+	std::cout<<__func__<<'\n';
+	std::vector<eis::DataPoint> data =getMockData();
+	std::cout<<"original"<<'\n';
+	printDataVect(data);
+	eis::normalize(data);
+	std::cout<<"normalized"<<'\n';
+	printDataVect(data);
+
+}
+
+void runEraseSingularities()
+{
+	std::cout<<__func__<<'\n';
+	std::vector<eis::DataPoint> data;
+	for(size_t i = 0; i < 1000; ++i)
+	{
+		 eis::DataPoint point;
+		 point.im = std::complex<fvalue>(1.0/(i/100.0), 1.0/((i-2)/100.0));
+		 point.omega = i;
+		 data.push_back(point);
+	}
+
+	std::cout<<"original"<<'\n';
+	printDataVect(data);
+
+	eraseSingularites(data);
+
+	std::cout<<"erased"<<'\n';
+	printDataVect(data);
 }
 
 int main(int argc, char** argv)
 {
 	eis::Log::headers = true;
 	eis::Log::level = eis::Log::INFO;
-	runSingle();
-	runSweepByIndex();
-	runSweep();
-	runRescale();
+	//runSingle();
+	//runSweepByIndex();
+	//runSweep();
+	//runRescale();
+	runNormalize();
+	//runEraseSingularities();
+	runReduce();
 	return 0;
 }