diff --git a/Code/Mantid/Framework/MDAlgorithms/test/Load_MDWorkspaceTest.h b/Code/Mantid/Framework/MDAlgorithms/test/Load_MDWorkspaceTest.h
index fe595bf8ef53b45ccd7bebb2b037376d653ba270..8324e2b437739730f539b12c2892592edc5d6d64 100644
--- a/Code/Mantid/Framework/MDAlgorithms/test/Load_MDWorkspaceTest.h
+++ b/Code/Mantid/Framework/MDAlgorithms/test/Load_MDWorkspaceTest.h
@@ -18,6 +18,7 @@ class Load_MDWorkspaceTest :    public CxxTest::TestSuite
 {
    Load_MDWorkspace loader;
    std::string targetWorkspaceName;
+   MDWorkspace *pLoadedWS;
  public:
      void testLoadMDWSInit(){
         TSM_ASSERT_THROWS_NOTHING("loader should initialize without throwing",loader.initialize());
@@ -31,6 +32,7 @@ class Load_MDWorkspaceTest :    public CxxTest::TestSuite
         TSM_ASSERT_THROWS("This file should not exist",loader.setPropertyValue("inFilename","../Test/AutoTestData/test_horace_reader.sqw"),std::invalid_argument);
         // and so this
         TSM_ASSERT_THROWS_NOTHING("The test file should exist",loader.setPropertyValue("inFilename","test_horace_reader.sqw"));
+      //  TSM_ASSERT_THROWS_NOTHING("The test file should exist",loader.setPropertyValue("inFilename","fe_demo.sqw"));
      }
      void testMDWSExec(){
          // does it add it to analysis data service? -- no
@@ -44,14 +46,50 @@ class Load_MDWorkspaceTest :    public CxxTest::TestSuite
          Workspace_sptr result;
          TSM_ASSERT_THROWS_NOTHING("We should retrieve loaded workspace without throwing",result=AnalysisDataService::Instance().retrieve(targetWorkspaceName));
 
-         MDWorkspace_sptr loadedWS=boost::dynamic_pointer_cast<MDWorkspace>(result);
-         TSM_ASSERT("MD workspace has not been casted coorectly",loadedWS.get()!=0);
+         MDWorkspace_sptr sp_loadedWS=boost::dynamic_pointer_cast<MDWorkspace>(result);
+         TSM_ASSERT("MD workspace has not been casted coorectly",sp_loadedWS.get()!=0);
+
+         pLoadedWS   = sp_loadedWS.get();
+
          //
-         TSM_ASSERT_EQUALS("The workspace should be 4D",4,loadedWS->getNumDims());
+         TSM_ASSERT_EQUALS("The workspace should be 4D",4,pLoadedWS->getNumDims());
+
+         TSM_ASSERT_EQUALS("The number of pixels contributed into this workspace should be 1523850",1523850,pLoadedWS->getNPoints());
+
+         TSM_ASSERT_EQUALS("The MD image in this workspace has to had 64 data cells",64,pLoadedWS->get_const_MDImage().getDataSize());
+     }
+     void testMDImageCorrect(){
+         // if the image we've loaded is correct image (the same as we've put there)
+         MDImage &IMG = pLoadedWS->get_const_MDImage();
+         std::vector<point3D> img_data;
+         std::vector<unsigned int> selection(2,0);
+
+         IMG.getPointData(selection,img_data);
+         double sum(0);
+         for(size_t i=0;i<img_data.size();i++){
+             sum+=img_data[i].S();
+         }
+         TSM_ASSERT_DELTA("The signal in this cell should be specified value",0.65789,img_data[0 ].S(),1.e-4);
+         TSM_ASSERT_DELTA("The signal in this cell should be specified value",0.37786,img_data[10].S(),1.e-4);
+         TSM_ASSERT_DELTA("The signal in this cell should be specified value",0.0,    img_data[15].S(),1.e-4);
+         TSM_ASSERT_DELTA("The sum of all signals in the signals selection should be specific value",7.3273,    sum,1.e-4);
+
+         selection[0]=1;
+         selection[1]=1;
+         IMG.getPointData(selection,img_data);
+
+         sum = 0;
+         for(size_t i=0;i<img_data.size();i++){
+             sum+=img_data[i].S();
+         }
+
+         TSM_ASSERT_DELTA("The signal in this cell should be specified value",0,      img_data[ 0].S(),1.e-4);
+         TSM_ASSERT_DELTA("The signal in this cell should be specified value",0.25612,img_data[ 1].S(),1.e-4);
+         TSM_ASSERT_DELTA("The signal in this cell should be specified value",0.15172,img_data[15].S(),1.e-4);
 
-         TSM_ASSERT_EQUALS("The number of pixels contributed into this workspace should be 1523850",1523850,loadedWS->getNPoints());
+         TSM_ASSERT_DELTA("The sum of all signals in the signals selection should be specific value",2.52227, sum,1.e-4);
 
-         TSM_ASSERT_EQUALS("The MD image in this workspace has to had 64 data cells",64,loadedWS->get_const_MDImage().getDataSize());
+  
      }
 
 };
diff --git a/Code/Mantid/Framework/MDAlgorithms/test/test_MDAlgorithms.sln b/Code/Mantid/Framework/MDAlgorithms/test/test_MDAlgorithms.sln
index 06d2da54de5ed4fe59d4473a19363809876d36ae..2c23cb0d87927c2a7e2bbc99228520dbb1e2faf1 100644
--- a/Code/Mantid/Framework/MDAlgorithms/test/test_MDAlgorithms.sln
+++ b/Code/Mantid/Framework/MDAlgorithms/test/test_MDAlgorithms.sln
@@ -2,21 +2,65 @@
 Microsoft Visual Studio Solution File, Format Version 11.00
 # Visual Studio 2010
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_MDAlgorithms", "test_MDAlgorithms.vcxproj", "{4C8D2E1C-650A-4CB4-8209-EC18AFB550C2}"
+	ProjectSection(ProjectDependencies) = postProject
+		{75061EAA-4AB1-4969-99EA-103E4F74B70E} = {75061EAA-4AB1-4969-99EA-103E4F74B70E}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MDAlgorithms", "..\..\..\Win32\Framework\MDAlgorithms\MDAlgorithms.vcxproj", "{75061EAA-4AB1-4969-99EA-103E4F74B70E}"
+	ProjectSection(ProjectDependencies) = postProject
+		{44C42D5C-37D6-4D66-AFC3-447E93F731BA} = {44C42D5C-37D6-4D66-AFC3-447E93F731BA}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MDDataObjects", "..\..\..\Win32\Framework\MDDataObjects\MDDataObjects.vcxproj", "{44C42D5C-37D6-4D66-AFC3-447E93F731BA}"
 EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 		Debug|Win32 = Debug|Win32
 		Debug|x64 = Debug|x64
+		MinSizeRel|Win32 = MinSizeRel|Win32
+		MinSizeRel|x64 = MinSizeRel|x64
 		Release|Win32 = Release|Win32
 		Release|x64 = Release|x64
+		RelWithDebInfo|Win32 = RelWithDebInfo|Win32
+		RelWithDebInfo|x64 = RelWithDebInfo|x64
 	EndGlobalSection
 	GlobalSection(ProjectConfigurationPlatforms) = postSolution
 		{4C8D2E1C-650A-4CB4-8209-EC18AFB550C2}.Debug|Win32.ActiveCfg = Debug|Win32
 		{4C8D2E1C-650A-4CB4-8209-EC18AFB550C2}.Debug|Win32.Build.0 = Debug|Win32
 		{4C8D2E1C-650A-4CB4-8209-EC18AFB550C2}.Debug|x64.ActiveCfg = Debug|Win32
+		{4C8D2E1C-650A-4CB4-8209-EC18AFB550C2}.MinSizeRel|Win32.ActiveCfg = Release|Win32
+		{4C8D2E1C-650A-4CB4-8209-EC18AFB550C2}.MinSizeRel|Win32.Build.0 = Release|Win32
+		{4C8D2E1C-650A-4CB4-8209-EC18AFB550C2}.MinSizeRel|x64.ActiveCfg = Release|Win32
 		{4C8D2E1C-650A-4CB4-8209-EC18AFB550C2}.Release|Win32.ActiveCfg = Release|Win32
 		{4C8D2E1C-650A-4CB4-8209-EC18AFB550C2}.Release|Win32.Build.0 = Release|Win32
 		{4C8D2E1C-650A-4CB4-8209-EC18AFB550C2}.Release|x64.ActiveCfg = Release|Win32
+		{4C8D2E1C-650A-4CB4-8209-EC18AFB550C2}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32
+		{4C8D2E1C-650A-4CB4-8209-EC18AFB550C2}.RelWithDebInfo|Win32.Build.0 = Release|Win32
+		{4C8D2E1C-650A-4CB4-8209-EC18AFB550C2}.RelWithDebInfo|x64.ActiveCfg = Release|Win32
+		{75061EAA-4AB1-4969-99EA-103E4F74B70E}.Debug|Win32.ActiveCfg = Debug|Win32
+		{75061EAA-4AB1-4969-99EA-103E4F74B70E}.Debug|Win32.Build.0 = Debug|Win32
+		{75061EAA-4AB1-4969-99EA-103E4F74B70E}.Debug|x64.ActiveCfg = Debug|Win32
+		{75061EAA-4AB1-4969-99EA-103E4F74B70E}.MinSizeRel|Win32.ActiveCfg = MinSizeRel|Win32
+		{75061EAA-4AB1-4969-99EA-103E4F74B70E}.MinSizeRel|Win32.Build.0 = MinSizeRel|Win32
+		{75061EAA-4AB1-4969-99EA-103E4F74B70E}.MinSizeRel|x64.ActiveCfg = MinSizeRel|Win32
+		{75061EAA-4AB1-4969-99EA-103E4F74B70E}.Release|Win32.ActiveCfg = Release|Win32
+		{75061EAA-4AB1-4969-99EA-103E4F74B70E}.Release|Win32.Build.0 = Release|Win32
+		{75061EAA-4AB1-4969-99EA-103E4F74B70E}.Release|x64.ActiveCfg = Release|Win32
+		{75061EAA-4AB1-4969-99EA-103E4F74B70E}.RelWithDebInfo|Win32.ActiveCfg = RelWithDebInfo|Win32
+		{75061EAA-4AB1-4969-99EA-103E4F74B70E}.RelWithDebInfo|Win32.Build.0 = RelWithDebInfo|Win32
+		{75061EAA-4AB1-4969-99EA-103E4F74B70E}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|Win32
+		{44C42D5C-37D6-4D66-AFC3-447E93F731BA}.Debug|Win32.ActiveCfg = Debug|Win32
+		{44C42D5C-37D6-4D66-AFC3-447E93F731BA}.Debug|Win32.Build.0 = Debug|Win32
+		{44C42D5C-37D6-4D66-AFC3-447E93F731BA}.Debug|x64.ActiveCfg = Debug|Win32
+		{44C42D5C-37D6-4D66-AFC3-447E93F731BA}.MinSizeRel|Win32.ActiveCfg = MinSizeRel|Win32
+		{44C42D5C-37D6-4D66-AFC3-447E93F731BA}.MinSizeRel|Win32.Build.0 = MinSizeRel|Win32
+		{44C42D5C-37D6-4D66-AFC3-447E93F731BA}.MinSizeRel|x64.ActiveCfg = MinSizeRel|Win32
+		{44C42D5C-37D6-4D66-AFC3-447E93F731BA}.Release|Win32.ActiveCfg = Release|Win32
+		{44C42D5C-37D6-4D66-AFC3-447E93F731BA}.Release|Win32.Build.0 = Release|Win32
+		{44C42D5C-37D6-4D66-AFC3-447E93F731BA}.Release|x64.ActiveCfg = Release|Win32
+		{44C42D5C-37D6-4D66-AFC3-447E93F731BA}.RelWithDebInfo|Win32.ActiveCfg = RelWithDebInfo|Win32
+		{44C42D5C-37D6-4D66-AFC3-447E93F731BA}.RelWithDebInfo|Win32.Build.0 = RelWithDebInfo|Win32
+		{44C42D5C-37D6-4D66-AFC3-447E93F731BA}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|Win32
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE
diff --git a/Code/Mantid/Framework/MDAlgorithms/test/test_MDAlgorithms.vcxproj b/Code/Mantid/Framework/MDAlgorithms/test/test_MDAlgorithms.vcxproj
index 83476d19fc6e5b7d8dadca5e0accf34dd185d153..634fe2b1a5da27ac0b05eb09eda8783446ff2139 100644
--- a/Code/Mantid/Framework/MDAlgorithms/test/test_MDAlgorithms.vcxproj
+++ b/Code/Mantid/Framework/MDAlgorithms/test/test_MDAlgorithms.vcxproj
@@ -52,7 +52,7 @@
     <Link>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <AdditionalLibraryDirectories>$(OutDir);..\..\..\Win32\bin\Debug;..\..\..\..\Third_Party\lib\win32</AdditionalLibraryDirectories>
-      <AdditionalDependencies>MDAlgorithms.lib;MDDataObjects.lib;MantidGeometry.lib;MantidAPI.lib;MantidKernel.lib</AdditionalDependencies>
+      <AdditionalDependencies>MantidMDAlgorithms.lib;MantidMDDataObjects.lib;MantidGeometry.lib;MantidAPI.lib;MantidKernel.lib</AdditionalDependencies>
       <OutputFile>$(OutDir)$(ProjectName)$(TargetExt)</OutputFile>
     </Link>
     <PreBuildEvent>
diff --git a/Code/Mantid/Framework/MDDataObjects/inc/MDDataObjects/MD_FileTestDataGenerator.h b/Code/Mantid/Framework/MDDataObjects/inc/MDDataObjects/MD_FileTestDataGenerator.h
index 5e00df8ac5400d885d7cccb8d845a44e39250ed2..7ca0f20d42d27692aeeb7ec2fac11b00849a2ec3 100644
--- a/Code/Mantid/Framework/MDDataObjects/inc/MDDataObjects/MD_FileTestDataGenerator.h
+++ b/Code/Mantid/Framework/MDDataObjects/inc/MDDataObjects/MD_FileTestDataGenerator.h
@@ -1,3 +1,4 @@
+
 #ifndef FILE_TEST_DATA_GENERATOR_H
 #define FILE_TEST_DATA_GENERATOR_H
 //
diff --git a/Code/Mantid/Framework/MDDataObjects/src/MD_FileTestDataGenerator.cpp b/Code/Mantid/Framework/MDDataObjects/src/MD_FileTestDataGenerator.cpp
index 01ff602273204efa83004702ee6c53552ba408a2..cdefca40164ce2ece6ef2ae1cd5fb5f9fc7c8598 100644
--- a/Code/Mantid/Framework/MDDataObjects/src/MD_FileTestDataGenerator.cpp
+++ b/Code/Mantid/Framework/MDDataObjects/src/MD_FileTestDataGenerator.cpp
@@ -110,6 +110,7 @@ MD_FileTestDataGenerator::read_pix(MDDataPoints & sqw)
 size_t 
 MD_FileTestDataGenerator::read_pix_subset(const MDImage &dnd,const std::vector<size_t> &selected_cells,size_t starting_cell,std::vector<char> &pix_buf, size_t &n_pix_in_buffer)
 {
+// pixels data generated assiuming 50^nDim lattice;
     size_t ic(starting_cell),j;
     unsigned int idim;
     unsigned long max_data_size;
@@ -117,17 +118,26 @@ MD_FileTestDataGenerator::read_pix_subset(const MDImage &dnd,const std::vector<s
 
     const Geometry::MDGeometry *pCurrentGeom = dnd.getGeometry();
     std::vector<std::string> dimID = pCurrentGeom->getBasisTags();
-    std::vector<std::vector<double> > dimPoints(this->nDims);
+    // data points;
+    std::vector<std::vector<float> > dimPoints(this->nDims);
     // obtain dimensions and dimensions coordinates;
     for(idim=0;idim<this->nDims;idim++){
         const Geometry::IMDDimension *pDim = pCurrentGeom->get_constDimension(dimID[idim]).get();
-        pDim->getAxisPoints(dimPoints[idim]);
+        dimPoints[idim].resize(50);
+        double min = pDim->getMinimum();
+        double step = (pDim->getMaximum()-min)/50;
+        min+=0.5*step;
+        for(j=0;j<50;j++){
+            dimPoints[idim][j]=(float)(min+j*step);
+        }
     }
   
     // if data buffer is unsufficient even for one block of pixels, increase it (very inefficient)
-    if(pix_buf.size()<sizeof_pixel*(starting_cell+1)){
-        pix_buf.resize(sizeof_pixel*(starting_cell+1));
-        max_data_size = starting_cell+1;
+    // number of pixels in test data cell equal the cell number (+1 ?) 
+    size_t n_pix_in_block = selected_cells[starting_cell]+1;
+    if(pix_buf.size()<sizeof_pixel*n_pix_in_block){
+        pix_buf.resize(sizeof_pixel*n_pix_in_block);
+        max_data_size = n_pix_in_block;
     }else{
         max_data_size = pix_buf.size()/sizeof_pixel;
     }
diff --git a/Code/Mantid/Framework/MDDataObjects/test/HoraceReaderTest.h b/Code/Mantid/Framework/MDDataObjects/test/HoraceReaderTest.h
index b054ab7fb064986f68332039c589112f1f0128c0..91788645a19db2b3c24c0a4ea0310678ce9ac65c 100644
--- a/Code/Mantid/Framework/MDDataObjects/test/HoraceReaderTest.h
+++ b/Code/Mantid/Framework/MDDataObjects/test/HoraceReaderTest.h
@@ -5,6 +5,7 @@
 #include "MDDataObjects/MD_FileFormatFactory.h"
 #include "Poco/Path.h"
 #include "MantidKernel/System.h"
+#include "MantidKernel/ConfigService.h"
 
 #include "MDDataObjects/MD_FileHoraceReader.h"
 #include "MDDataObjects/MDImage.h"
@@ -73,6 +74,7 @@ class HoraceReaderTest :    public CxxTest::TestSuite
 {
 public:
 	void testConstructor(){
+        std::string instrumentPath = Kernel::ConfigService::Instance().getString("instrumentDefinition.directory");
 		std::string test_file;
 		std::string testFile = findTestFileLocation("../../../../Test/AutoTestData/test_horace_reader.sqw");
 
diff --git a/Code/Mantid/Framework/MDDataObjects/test/test_MDD.sln b/Code/Mantid/Framework/MDDataObjects/test/test_MDD.sln
index 95c5b3a4931f2e36cfaf8593013933dcf613c2c7..16e6daaa0242ef301b9ebd43b57e89310df5f7a4 100644
--- a/Code/Mantid/Framework/MDDataObjects/test/test_MDD.sln
+++ b/Code/Mantid/Framework/MDDataObjects/test/test_MDD.sln
@@ -3,22 +3,46 @@ Microsoft Visual Studio Solution File, Format Version 11.00
 # Visual Studio 2010
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_MDD", "test_MDD.vcxproj", "{35BD3896-7AB3-4781-A28A-279CBBE6AD68}"
 EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MDDataObjects", "..\..\..\Win32\Framework\MDDataObjects\MDDataObjects.vcxproj", "{44C42D5C-37D6-4D66-AFC3-447E93F731BA}"
+EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 		Debug|Win32 = Debug|Win32
 		Debug|x64 = Debug|x64
+		MinSizeRel|Win32 = MinSizeRel|Win32
+		MinSizeRel|x64 = MinSizeRel|x64
 		Release|Win32 = Release|Win32
 		Release|x64 = Release|x64
+		RelWithDebInfo|Win32 = RelWithDebInfo|Win32
+		RelWithDebInfo|x64 = RelWithDebInfo|x64
 	EndGlobalSection
 	GlobalSection(ProjectConfigurationPlatforms) = postSolution
 		{35BD3896-7AB3-4781-A28A-279CBBE6AD68}.Debug|Win32.ActiveCfg = Debug|Win32
 		{35BD3896-7AB3-4781-A28A-279CBBE6AD68}.Debug|Win32.Build.0 = Debug|Win32
 		{35BD3896-7AB3-4781-A28A-279CBBE6AD68}.Debug|x64.ActiveCfg = Debug|x64
 		{35BD3896-7AB3-4781-A28A-279CBBE6AD68}.Debug|x64.Build.0 = Debug|x64
+		{35BD3896-7AB3-4781-A28A-279CBBE6AD68}.MinSizeRel|Win32.ActiveCfg = Release|x64
+		{35BD3896-7AB3-4781-A28A-279CBBE6AD68}.MinSizeRel|x64.ActiveCfg = Release|x64
+		{35BD3896-7AB3-4781-A28A-279CBBE6AD68}.MinSizeRel|x64.Build.0 = Release|x64
 		{35BD3896-7AB3-4781-A28A-279CBBE6AD68}.Release|Win32.ActiveCfg = Release|Win32
 		{35BD3896-7AB3-4781-A28A-279CBBE6AD68}.Release|Win32.Build.0 = Release|Win32
 		{35BD3896-7AB3-4781-A28A-279CBBE6AD68}.Release|x64.ActiveCfg = Release|x64
 		{35BD3896-7AB3-4781-A28A-279CBBE6AD68}.Release|x64.Build.0 = Release|x64
+		{35BD3896-7AB3-4781-A28A-279CBBE6AD68}.RelWithDebInfo|Win32.ActiveCfg = Release|x64
+		{35BD3896-7AB3-4781-A28A-279CBBE6AD68}.RelWithDebInfo|x64.ActiveCfg = Release|x64
+		{35BD3896-7AB3-4781-A28A-279CBBE6AD68}.RelWithDebInfo|x64.Build.0 = Release|x64
+		{44C42D5C-37D6-4D66-AFC3-447E93F731BA}.Debug|Win32.ActiveCfg = Debug|Win32
+		{44C42D5C-37D6-4D66-AFC3-447E93F731BA}.Debug|Win32.Build.0 = Debug|Win32
+		{44C42D5C-37D6-4D66-AFC3-447E93F731BA}.Debug|x64.ActiveCfg = Debug|Win32
+		{44C42D5C-37D6-4D66-AFC3-447E93F731BA}.MinSizeRel|Win32.ActiveCfg = MinSizeRel|Win32
+		{44C42D5C-37D6-4D66-AFC3-447E93F731BA}.MinSizeRel|Win32.Build.0 = MinSizeRel|Win32
+		{44C42D5C-37D6-4D66-AFC3-447E93F731BA}.MinSizeRel|x64.ActiveCfg = MinSizeRel|Win32
+		{44C42D5C-37D6-4D66-AFC3-447E93F731BA}.Release|Win32.ActiveCfg = Release|Win32
+		{44C42D5C-37D6-4D66-AFC3-447E93F731BA}.Release|Win32.Build.0 = Release|Win32
+		{44C42D5C-37D6-4D66-AFC3-447E93F731BA}.Release|x64.ActiveCfg = Release|Win32
+		{44C42D5C-37D6-4D66-AFC3-447E93F731BA}.RelWithDebInfo|Win32.ActiveCfg = RelWithDebInfo|Win32
+		{44C42D5C-37D6-4D66-AFC3-447E93F731BA}.RelWithDebInfo|Win32.Build.0 = RelWithDebInfo|Win32
+		{44C42D5C-37D6-4D66-AFC3-447E93F731BA}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|Win32
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE