diff --git a/Framework/DataObjects/test/MDEventInserterTest.h b/Framework/DataObjects/test/MDEventInserterTest.h
index 3285149b0e1373af9fbbfc85da073fee30056fbc..2fc05b5ecaa53cd4ec5e974c2d1262c2e2adecc3 100644
--- a/Framework/DataObjects/test/MDEventInserterTest.h
+++ b/Framework/DataObjects/test/MDEventInserterTest.h
@@ -28,13 +28,14 @@ private:
   /// specified event type.
   IMDEventWorkspace_sptr createInputWorkspace(const std::string &eventType) {
     using Mantid::Geometry::MDHistoDimension;
-
+    Mantid::Geometry::GeneralFrame frame(
+        Mantid::Geometry::GeneralFrame::GeneralFrameDistance, "m");
     IMDEventWorkspace_sptr ws = MDEventFactory::CreateMDWorkspace(2, eventType);
     coord_t min(-10.0f), max(10.0f);
     ws->addDimension(
-        boost::make_shared<MDHistoDimension>("A", "A", "m", min, max, 1));
+        boost::make_shared<MDHistoDimension>("A", "A", frame, min, max, 1));
     ws->addDimension(
-        boost::make_shared<MDHistoDimension>("B", "B", "m", min, max, 1));
+        boost::make_shared<MDHistoDimension>("B", "B", frame, min, max, 1));
     ws->initialize();
     // Split to level 1
     ws->splitBox();
diff --git a/Framework/DataObjects/test/MDHistoWorkspaceIteratorTest.h b/Framework/DataObjects/test/MDHistoWorkspaceIteratorTest.h
index 5791b8fc0b7c6d5e21506a1128d2933c5244b261..3879e17d05a5b950b5cbc73c58f1a0e79b1c0812 100644
--- a/Framework/DataObjects/test/MDHistoWorkspaceIteratorTest.h
+++ b/Framework/DataObjects/test/MDHistoWorkspaceIteratorTest.h
@@ -244,9 +244,11 @@ public:
   }
 
   void test_skip_masked_detectors() {
+    Mantid::Geometry::GeneralFrame frame(
+        Mantid::Geometry::GeneralFrame::GeneralFrameDistance, "m");
     WritableHistoWorkspace *ws =
         new WritableHistoWorkspace(MDHistoDimension_sptr(
-            new MDHistoDimension("x", "x", "m", 0.0, 10, 100)));
+            new MDHistoDimension("x", "x", frame, 0.0, 10, 100)));
 
     ws->setMaskValueAt(0, true);  // Mask the first bin
     ws->setMaskValueAt(1, true);  // Mask the second bin
diff --git a/Framework/SINQ/src/SliceMDHisto.cpp b/Framework/SINQ/src/SliceMDHisto.cpp
index 60e4bb154c917b94fa11204d3c37b3a4b40eb158..b415a4afd50af8affaaadb31a55ede63b59fae3e 100644
--- a/Framework/SINQ/src/SliceMDHisto.cpp
+++ b/Framework/SINQ/src/SliceMDHisto.cpp
@@ -75,7 +75,7 @@ void SliceMDHisto::exec() {
   for (unsigned int k = 0; k < m_rank; ++k) {
     boost::shared_ptr<const IMDDimension> arDim = inWS->getDimension(k);
     dimensions.push_back(MDHistoDimension_sptr(new MDHistoDimension(
-        arDim->getName(), arDim->getName(), arDim->getUnits(),
+      arDim->getName(), arDim->getName(), arDim->getMDFrame(),
         arDim->getX(start[k]), arDim->getX(end[k]), end[k] - start[k])));
   }
   MDHistoWorkspace_sptr outWS(new MDHistoWorkspace(dimensions));
diff --git a/Framework/SINQ/test/InvertMDDimTest.h b/Framework/SINQ/test/InvertMDDimTest.h
index 860eb191a9799612973b8e3dbf16279fa92b90e3..ff52f7344736d27c58123514604d03cd0c0c2634 100644
--- a/Framework/SINQ/test/InvertMDDimTest.h
+++ b/Framework/SINQ/test/InvertMDDimTest.h
@@ -110,17 +110,19 @@ public:
 private:
   MDHistoWorkspace_sptr makeTestMD() {
     IMDDimension_sptr dim;
+    Mantid::Geometry::GeneralFrame frame(
+        Mantid::Geometry::GeneralFrame::GeneralFrameDistance, "mm");
     std::vector<IMDDimension_sptr> dimensions;
     dim = MDHistoDimension_sptr(new MDHistoDimension(
-        std::string("x"), std::string("ID0"), std::string("mm"), coord_t(-5),
+        std::string("x"), std::string("ID0"), frame, coord_t(-5),
         coord_t(5), size_t(10)));
     dimensions.push_back(boost::const_pointer_cast<IMDDimension>(dim));
     dim = MDHistoDimension_sptr(new MDHistoDimension(
-        std::string("y"), std::string("ID1"), std::string("mm"), coord_t(-6),
+        std::string("y"), std::string("ID1"), frame, coord_t(-6),
         coord_t(6), size_t(12)));
     dimensions.push_back(boost::const_pointer_cast<IMDDimension>(dim));
     dim = MDHistoDimension_sptr(new MDHistoDimension(
-        std::string("z"), std::string("ID2"), std::string("mm"), coord_t(-10),
+        std::string("z"), std::string("ID2"), frame, coord_t(-10),
         coord_t(10), size_t(20)));
     dimensions.push_back(boost::const_pointer_cast<IMDDimension>(dim));
 
diff --git a/Framework/SINQ/test/MDHistoToWorkspace2DTest.h b/Framework/SINQ/test/MDHistoToWorkspace2DTest.h
index cdd08b0122c9f084011b4872bbfd415e32c32814..03bc6664002335309508c02a48a0513fa7cc212f 100644
--- a/Framework/SINQ/test/MDHistoToWorkspace2DTest.h
+++ b/Framework/SINQ/test/MDHistoToWorkspace2DTest.h
@@ -74,17 +74,19 @@ public:
 private:
   MDHistoWorkspace_sptr makeTestMD() {
     IMDDimension_sptr dim;
+    Mantid::Geometry::GeneralFrame frame(
+        Mantid::Geometry::GeneralFrame::GeneralFrameDistance, "mm");
     std::vector<IMDDimension_sptr> dimensions;
     dim = MDHistoDimension_sptr(new MDHistoDimension(
-        std::string("x"), std::string("ID0"), std::string("mm"), coord_t(-50),
+        std::string("x"), std::string("ID0"), frame, coord_t(-50),
         coord_t(50), size_t(100)));
     dimensions.push_back(boost::const_pointer_cast<IMDDimension>(dim));
     dim = MDHistoDimension_sptr(new MDHistoDimension(
-        std::string("y"), std::string("ID1"), std::string("mm"), coord_t(-60),
+        std::string("y"), std::string("ID1"), frame, coord_t(-60),
         coord_t(60), size_t(120)));
     dimensions.push_back(boost::const_pointer_cast<IMDDimension>(dim));
     dim = MDHistoDimension_sptr(new MDHistoDimension(
-        std::string("z"), std::string("ID2"), std::string("mm"), coord_t(-100),
+        std::string("z"), std::string("ID2"), frame, coord_t(-100),
         coord_t(100), size_t(200)));
     dimensions.push_back(boost::const_pointer_cast<IMDDimension>(dim));
 
diff --git a/Framework/SINQ/test/ProjectMDTest.h b/Framework/SINQ/test/ProjectMDTest.h
index 5f34e3acb3b2542523290d293722d95fc076b41f..47c4343bba790c00dc275a6eea24e4d60a440213 100644
--- a/Framework/SINQ/test/ProjectMDTest.h
+++ b/Framework/SINQ/test/ProjectMDTest.h
@@ -228,17 +228,18 @@ public:
 private:
   MDHistoWorkspace_sptr makeTestMD() {
     IMDDimension_sptr dim;
+    Mantid::Geometry::GeneralFrame frame(Mantid::Geometry::GeneralFrame::GeneralFrameDistance, "mm");
     std::vector<IMDDimension_sptr> dimensions;
     dim = MDHistoDimension_sptr(new MDHistoDimension(
-        std::string("x"), std::string("ID0"), std::string("mm"), coord_t(-5),
+        std::string("x"), std::string("ID0"), frame, coord_t(-5),
         coord_t(5), size_t(10)));
     dimensions.push_back(boost::const_pointer_cast<IMDDimension>(dim));
     dim = MDHistoDimension_sptr(new MDHistoDimension(
-        std::string("y"), std::string("ID1"), std::string("mm"), coord_t(-6),
+        std::string("y"), std::string("ID1"), frame, coord_t(-6),
         coord_t(6), size_t(12)));
     dimensions.push_back(boost::const_pointer_cast<IMDDimension>(dim));
     dim = MDHistoDimension_sptr(new MDHistoDimension(
-        std::string("z"), std::string("ID2"), std::string("mm"), coord_t(-10),
+        std::string("z"), std::string("ID2"), frame, coord_t(-10),
         coord_t(10), size_t(20)));
     dimensions.push_back(boost::const_pointer_cast<IMDDimension>(dim));
 
diff --git a/Framework/SINQ/test/SliceMDHistoTest.h b/Framework/SINQ/test/SliceMDHistoTest.h
index 140ef301df70049384bfce91d457ad33c1028d82..00cf3d72d1ed14b08b85d651ac417059a0c30137 100644
--- a/Framework/SINQ/test/SliceMDHistoTest.h
+++ b/Framework/SINQ/test/SliceMDHistoTest.h
@@ -90,16 +90,18 @@ private:
   MDHistoWorkspace_sptr makeTestMD() {
     IMDDimension_sptr dim;
     std::vector<IMDDimension_sptr> dimensions;
+    Mantid::Geometry::GeneralFrame frame(
+        Mantid::Geometry::GeneralFrame::GeneralFrameDistance, "mm");
     dim = MDHistoDimension_sptr(new MDHistoDimension(
-        std::string("x"), std::string("ID0"), std::string("mm"), coord_t(-50),
+        std::string("x"), std::string("ID0"), frame, coord_t(-50),
         coord_t(50), size_t(100)));
     dimensions.push_back(boost::const_pointer_cast<IMDDimension>(dim));
     dim = MDHistoDimension_sptr(new MDHistoDimension(
-        std::string("y"), std::string("ID1"), std::string("mm"), coord_t(-60),
+        std::string("y"), std::string("ID1"), frame, coord_t(-60),
         coord_t(60), size_t(120)));
     dimensions.push_back(boost::const_pointer_cast<IMDDimension>(dim));
     dim = MDHistoDimension_sptr(new MDHistoDimension(
-        std::string("z"), std::string("ID2"), std::string("mm"), coord_t(-100),
+        std::string("z"), std::string("ID2"), frame, coord_t(-100),
         coord_t(100), size_t(200)));
     dimensions.push_back(boost::const_pointer_cast<IMDDimension>(dim));
 
diff --git a/MantidQt/API/test/PlotAxisTest.h b/MantidQt/API/test/PlotAxisTest.h
index 8816dce04c058560b7f0dedc5eaae17b7abefa4e..302f9be5c1512e1386832e218ea1e9e82a8ae8cf 100644
--- a/MantidQt/API/test/PlotAxisTest.h
+++ b/MantidQt/API/test/PlotAxisTest.h
@@ -138,8 +138,10 @@ public:
     using MantidQt::API::PlotAxis;
     using Mantid::Geometry::MDHistoDimension;
     using Mantid::Kernel::UnitLabel;
-
-      MDHistoDimension dim("tof", "dimx", UnitLabel("us",L"\u03bcs","\\mu s"), 0.0f, 1.0f, 10);
+    Mantid::Geometry::GeneralFrame frame(
+        Mantid::Geometry::GeneralFrame::GeneralFrameTOF,
+        UnitLabel("us", L"\u03bcs", "\\mu s"));
+    MDHistoDimension dim("tof", "dimx", frame, 0.0f, 1.0f, 10);
     QString expected = QString::fromWCharArray(L"tof (\u03bcs)");
     TS_ASSERT_EQUALS(expected, PlotAxis(dim).title());
   }
diff --git a/Vates/VatesAPI/src/MDEWLoadingPresenter.cpp b/Vates/VatesAPI/src/MDEWLoadingPresenter.cpp
index ef6d00898db96ef9faa17df0a07efd65b945a5e0..e551f06583c79fc46c076c2086e53dc4ba0aebce 100644
--- a/Vates/VatesAPI/src/MDEWLoadingPresenter.cpp
+++ b/Vates/VatesAPI/src/MDEWLoadingPresenter.cpp
@@ -65,7 +65,7 @@ namespace Mantid
         }
         //std::cout << "dim " << d << min << " to " <<  max << std::endl;
         axisLabels.push_back(makeAxisTitle(inDim));
-        MDHistoDimension_sptr dim(new MDHistoDimension(inDim->getName(), inDim->getName(), inDim->getUnits(), min, max, inDim->getNBins()));
+        MDHistoDimension_sptr dim(new MDHistoDimension(inDim->getName(), inDim->getName(), inDim->getMDFrame(), min, max, inDim->getNBins()));
         dimensions.push_back(dim);
       }
 
diff --git a/Vates/VatesAPI/src/MDHWLoadingPresenter.cpp b/Vates/VatesAPI/src/MDHWLoadingPresenter.cpp
index 305cdf43e8cbc0d0df6a17d0b2ce8e02d2adf385..9db9b9dd4bed614e691c755f2e3ffa5b149cb533 100644
--- a/Vates/VatesAPI/src/MDHWLoadingPresenter.cpp
+++ b/Vates/VatesAPI/src/MDHWLoadingPresenter.cpp
@@ -125,7 +125,7 @@ void MDHWLoadingPresenter::extractMetadata(
     axisLabels.push_back(makeAxisTitle(inDim));
     MDHistoDimension_sptr dim(
         new MDHistoDimension(inDim->getName(), inDim->getName(),
-                             inDim->getUnits(), min, max, inDim->getNBins()));
+                             inDim->getMDFrame(), min, max, inDim->getNBins()));
     dimensions.push_back(dim);
   }
 
diff --git a/Vates/VatesAPI/src/SQWLoadingPresenter.cpp b/Vates/VatesAPI/src/SQWLoadingPresenter.cpp
index 537d14a4481648b340867561be679c96921ea725..7e51bd61e9fdca7df18444499b3b213ed9480cf1 100644
--- a/Vates/VatesAPI/src/SQWLoadingPresenter.cpp
+++ b/Vates/VatesAPI/src/SQWLoadingPresenter.cpp
@@ -110,7 +110,7 @@ namespace Mantid
         IMDDimension_const_sptr inDim = eventWs->getDimension(d);
         axisLabels.push_back(makeAxisTitle(inDim));
         //Copy the dimension, but set the ID and name to be the same. This is an assumption in bintohistoworkspace.
-        MDHistoDimension_sptr dim(new MDHistoDimension(inDim->getName(), inDim->getName(), inDim->getUnits(), inDim->getMinimum(), inDim->getMaximum(), size_t(10)));
+        MDHistoDimension_sptr dim(new MDHistoDimension(inDim->getName(), inDim->getName(), inDim->getMDFrame(), inDim->getMinimum(), inDim->getMaximum(), size_t(10)));
         dimensions.push_back(dim);
       }