diff --git a/Framework/Algorithms/inc/MantidAlgorithms/CorelliCrossCorrelate.h b/Framework/Algorithms/inc/MantidAlgorithms/CorelliCrossCorrelate.h
index af9975c5aa9982f20de5eced5f459c6fe233fd2f..8811709724a797bbd4670af6fd56d7f862f9bedf 100644
--- a/Framework/Algorithms/inc/MantidAlgorithms/CorelliCrossCorrelate.h
+++ b/Framework/Algorithms/inc/MantidAlgorithms/CorelliCrossCorrelate.h
@@ -38,7 +38,7 @@ public:
 
   virtual const std::string name() const { return "CorelliCrossCorrelate"; };
   virtual int version() const { return 1; };
-  virtual const std::string category() const { return "Diffraction;Events"; };
+  virtual const std::string category() const { return "Diffraction\\Calibration;Events"; };
   virtual const std::string summary() const {
     return "Cross-correlation calculation for the elastic signal from Corelli.";
   };
diff --git a/Framework/Algorithms/inc/MantidAlgorithms/CreateCalFileByNames.h b/Framework/Algorithms/inc/MantidAlgorithms/CreateCalFileByNames.h
index b08c31518d03ebccf944fe15fab65df517b2f631..6b7d596eeb3e8f3bd63a44042823532ed9a96535 100644
--- a/Framework/Algorithms/inc/MantidAlgorithms/CreateCalFileByNames.h
+++ b/Framework/Algorithms/inc/MantidAlgorithms/CreateCalFileByNames.h
@@ -78,7 +78,7 @@ public:
   /// Algorithm's version
   virtual int version() const { return (1); }
   /// Algorithm's category for identification
-  virtual const std::string category() const { return "Diffraction"; }
+  virtual const std::string category() const { return "Diffraction\\DataHandling\\CalFiles"; }
 
 private:
   /// Calibration entries map
diff --git a/Framework/Algorithms/inc/MantidAlgorithms/CreateDummyCalFile.h b/Framework/Algorithms/inc/MantidAlgorithms/CreateDummyCalFile.h
index 45533564bac1612568d677049167b608cb4b161f..8d38121c29c7dd1d3e4e71a3795888a9fec15960 100644
--- a/Framework/Algorithms/inc/MantidAlgorithms/CreateDummyCalFile.h
+++ b/Framework/Algorithms/inc/MantidAlgorithms/CreateDummyCalFile.h
@@ -77,7 +77,7 @@ public:
   /// Algorithm's version
   virtual int version() const { return (1); }
   /// Algorithm's category for identification
-  virtual const std::string category() const { return "Diffraction"; }
+  virtual const std::string category() const { return "Diffraction\\DataHandling\\CalFiles"; }
 
 private:
   /// Calibration entries map
diff --git a/Framework/Algorithms/inc/MantidAlgorithms/DiffractionEventCalibrateDetectors.h b/Framework/Algorithms/inc/MantidAlgorithms/DiffractionEventCalibrateDetectors.h
index 8de127e43e516871c0ebcc052d7f4dcd01b977aa..ad9824cd46ed98d58984f1d2bb8ce74c8aff2172 100644
--- a/Framework/Algorithms/inc/MantidAlgorithms/DiffractionEventCalibrateDetectors.h
+++ b/Framework/Algorithms/inc/MantidAlgorithms/DiffractionEventCalibrateDetectors.h
@@ -59,7 +59,7 @@ public:
   virtual int version() const { return 1; }
   /// Algorithm's category for identification overriding a virtual method
   virtual const std::string category() const {
-    return "Diffraction;CorrectionFunctions\\InstrumentCorrections";
+    return "Diffraction\\Calibration;CorrectionFunctions\\InstrumentCorrections";
   }
   /// Function to optimize
   double intensity(double x, double y, double z, double rotx, double roty,
diff --git a/Framework/Algorithms/inc/MantidAlgorithms/DiffractionFocussing.h b/Framework/Algorithms/inc/MantidAlgorithms/DiffractionFocussing.h
index 0129bbe3fc808f680526d57a0ee6bfd9a60599eb..99303ddcd4c33f3cecc08edb730ec52bf6a44180 100644
--- a/Framework/Algorithms/inc/MantidAlgorithms/DiffractionFocussing.h
+++ b/Framework/Algorithms/inc/MantidAlgorithms/DiffractionFocussing.h
@@ -80,7 +80,7 @@ public:
   /// Algorithm's version for identification overriding a virtual method
   virtual int version() const { return 1; }
   /// Algorithm's category for identification overriding a virtual method
-  virtual const std::string category() const { return "Diffraction"; }
+  virtual const std::string category() const { return "Diffraction\\Focussing"; }
 
 private:
   // Overridden Algorithm methods
diff --git a/Framework/Algorithms/inc/MantidAlgorithms/DiffractionFocussing2.h b/Framework/Algorithms/inc/MantidAlgorithms/DiffractionFocussing2.h
index 8edd177c766099f0cc3a829ed75d3bde8477a4fa..c03d62c5073f37df2f24c96ca410690feca156f4 100644
--- a/Framework/Algorithms/inc/MantidAlgorithms/DiffractionFocussing2.h
+++ b/Framework/Algorithms/inc/MantidAlgorithms/DiffractionFocussing2.h
@@ -97,7 +97,7 @@ public:
   /// Algorithm's version for identification overriding a virtual method
   virtual int version() const { return 2; }
   /// Algorithm's category for identification overriding a virtual method
-  virtual const std::string category() const { return "Diffraction"; }
+  virtual const std::string category() const { return "Diffraction\\Focussing"; }
 
 private:
   // Overridden Algorithm methods
diff --git a/Framework/Algorithms/inc/MantidAlgorithms/ExportTimeSeriesLog.h b/Framework/Algorithms/inc/MantidAlgorithms/ExportTimeSeriesLog.h
index e4def97d3da9b53ddac9408fd0e597e6d08f0d8f..4e6b85a772104fdaabfa4c327306a82981e46653 100644
--- a/Framework/Algorithms/inc/MantidAlgorithms/ExportTimeSeriesLog.h
+++ b/Framework/Algorithms/inc/MantidAlgorithms/ExportTimeSeriesLog.h
@@ -44,7 +44,7 @@ public:
   virtual const std::string name() const { return "ExportTimeSeriesLog"; };
   virtual int version() const { return 1; };
   virtual const std::string category() const {
-    return "Diffraction;Events\\EventFiltering";
+    return "Diffraction\\DataHandling;Events\\EventFiltering";
   };
 
   /// Summary of algorithms purpose
diff --git a/Framework/Algorithms/inc/MantidAlgorithms/FixGSASInstrumentFile.h b/Framework/Algorithms/inc/MantidAlgorithms/FixGSASInstrumentFile.h
index 64359d367ed2edfd02dd5eee575a91bc1ff2f7be..4a1c4836d8654093a9a38ecb06f0b5aa4a3f04ee 100644
--- a/Framework/Algorithms/inc/MantidAlgorithms/FixGSASInstrumentFile.h
+++ b/Framework/Algorithms/inc/MantidAlgorithms/FixGSASInstrumentFile.h
@@ -46,7 +46,7 @@ public:
   virtual int version() const { return 1; }
 
   /// Algorithm's category for identification overriding a virtual method
-  virtual const std::string category() const { return "Diffraction"; }
+  virtual const std::string category() const { return "Diffraction\\DataHandling"; }
 
 private:
   /// Implement abstract Algorithm methods
diff --git a/Framework/Algorithms/inc/MantidAlgorithms/GetDetOffsetsMultiPeaks.h b/Framework/Algorithms/inc/MantidAlgorithms/GetDetOffsetsMultiPeaks.h
index 24bc3aae46e27bcc984148689a62ced1ece93d3d..d62b48ccf7b44e6de1d8300da9717ae28669e04e 100644
--- a/Framework/Algorithms/inc/MantidAlgorithms/GetDetOffsetsMultiPeaks.h
+++ b/Framework/Algorithms/inc/MantidAlgorithms/GetDetOffsetsMultiPeaks.h
@@ -77,7 +77,7 @@ public:
   /// Algorithm's version for identification overriding a virtual method
   virtual int version() const { return 1; }
   /// Algorithm's category for identification overriding a virtual method
-  virtual const std::string category() const { return "Diffraction"; }
+  virtual const std::string category() const { return "Diffraction\\Calibration"; }
   /// Summary of algorithms purpose
   virtual const std::string summary() const {
     return "Creates an OffsetsWorkspace containing offsets for each detector. "
diff --git a/Framework/Algorithms/inc/MantidAlgorithms/GetDetectorOffsets.h b/Framework/Algorithms/inc/MantidAlgorithms/GetDetectorOffsets.h
index f03558bbd63e3f7eaddcdf53b9c8df4d798e160e..268983cc2f1a5bfc219645a956a8acd23066b3df 100644
--- a/Framework/Algorithms/inc/MantidAlgorithms/GetDetectorOffsets.h
+++ b/Framework/Algorithms/inc/MantidAlgorithms/GetDetectorOffsets.h
@@ -52,7 +52,7 @@ public:
   /// Algorithm's version for identification overriding a virtual method
   virtual int version() const { return 1; }
   /// Algorithm's category for identification overriding a virtual method
-  virtual const std::string category() const { return "Diffraction"; }
+  virtual const std::string category() const { return "Diffraction\\Calibration"; }
 
 private:
   // Overridden Algorithm methods
diff --git a/Framework/Algorithms/inc/MantidAlgorithms/GetTimeSeriesLogInformation.h b/Framework/Algorithms/inc/MantidAlgorithms/GetTimeSeriesLogInformation.h
index 8c86c243fa1fc17ce08374ad17a38a4e1cc1d928..c4eb9c613434a8a8d4dfa695285c0b736b6115ce 100644
--- a/Framework/Algorithms/inc/MantidAlgorithms/GetTimeSeriesLogInformation.h
+++ b/Framework/Algorithms/inc/MantidAlgorithms/GetTimeSeriesLogInformation.h
@@ -52,7 +52,7 @@ public:
 
   virtual int version() const { return 1; }
   virtual const std::string category() const {
-    return "Diffraction;Events\\EventFiltering";
+    return "Diffraction\\Utility;Events\\EventFiltering";
   }
 
 private:
diff --git a/Framework/Algorithms/inc/MantidAlgorithms/HRPDSlabCanAbsorption.h b/Framework/Algorithms/inc/MantidAlgorithms/HRPDSlabCanAbsorption.h
index 76bae633d192488bc03771923116ae3de9e4c59f..9ea55cd00357a385814c398cfd11b233b88f7b2a 100644
--- a/Framework/Algorithms/inc/MantidAlgorithms/HRPDSlabCanAbsorption.h
+++ b/Framework/Algorithms/inc/MantidAlgorithms/HRPDSlabCanAbsorption.h
@@ -84,7 +84,7 @@ public:
   /// Algorithm's version
   virtual int version() const { return (1); }
   /// Algorithm's category for identification
-  virtual const std::string category() const { return "Diffraction"; }
+  virtual const std::string category() const { return "CorrectionFunctions\\AbsorptionCorrections"; }
 
 private:
   /// Initialisation code
diff --git a/Framework/Algorithms/inc/MantidAlgorithms/MaskDetectorsIf.h b/Framework/Algorithms/inc/MantidAlgorithms/MaskDetectorsIf.h
index 8188ac663a49542c7e003111f53cc7819d2d4c3f..04e873386600621a50d0183269e8790bcfd6153c 100644
--- a/Framework/Algorithms/inc/MantidAlgorithms/MaskDetectorsIf.h
+++ b/Framework/Algorithms/inc/MantidAlgorithms/MaskDetectorsIf.h
@@ -62,7 +62,7 @@ public:
   virtual int version() const { return 1; }
   /// Algorithm's category for identification overriding a virtual method
   virtual const std::string category() const {
-    return "Diffraction;Transforms\\Masking";
+    return "Diffraction\\Masking;Transforms\\Masking";
   }
 
 private:
diff --git a/Framework/Algorithms/inc/MantidAlgorithms/PDFFourierTransform.h b/Framework/Algorithms/inc/MantidAlgorithms/PDFFourierTransform.h
index 4c89a4e7cb8906f450d20870698021366fc03c14..8125781087ff936484c2c516aaefd719d76351f9 100644
--- a/Framework/Algorithms/inc/MantidAlgorithms/PDFFourierTransform.h
+++ b/Framework/Algorithms/inc/MantidAlgorithms/PDFFourierTransform.h
@@ -25,8 +25,7 @@ public:
   /// Algorithm's version for identification
   virtual int version() const;
   /// Algorithm's category for identification
-  virtual const std::string
-  category() const; // category better be in diffraction than general
+  virtual const std::string category() const; 
   /// @copydoc Algorithm::validateInputs()
   virtual std::map<std::string, std::string> validateInputs();
 
diff --git a/Framework/Algorithms/inc/MantidAlgorithms/PointByPointVCorrection.h b/Framework/Algorithms/inc/MantidAlgorithms/PointByPointVCorrection.h
index ec1b48fec471b15284c4db1d02cee78d762917d9..36fb658bc7609695498a9a355fd97fca5a1ae33b 100644
--- a/Framework/Algorithms/inc/MantidAlgorithms/PointByPointVCorrection.h
+++ b/Framework/Algorithms/inc/MantidAlgorithms/PointByPointVCorrection.h
@@ -51,7 +51,7 @@ public:
   virtual int version() const { return 1; }
   /// Algorithm's category for identification overriding a virtual method
   virtual const std::string category() const {
-    return "Diffraction;CorrectionFunctions\\SpecialCorrections";
+    return "Diffraction\\Corrections;CorrectionFunctions\\SpecialCorrections";
   }
 
 private:
diff --git a/Framework/Algorithms/inc/MantidAlgorithms/ReadGroupsFromFile.h b/Framework/Algorithms/inc/MantidAlgorithms/ReadGroupsFromFile.h
index 81115c430ab233007bdc3fae6281a07e18de4e50..86a42be9cd61856207cf354ab31175f03244078b 100644
--- a/Framework/Algorithms/inc/MantidAlgorithms/ReadGroupsFromFile.h
+++ b/Framework/Algorithms/inc/MantidAlgorithms/ReadGroupsFromFile.h
@@ -93,7 +93,7 @@ public:
   /// Algorithm's version
   virtual int version() const { return (1); }
   /// Algorithm's category for identification
-  virtual const std::string category() const { return "Diffraction"; }
+  virtual const std::string category() const { return "Diffraction\\DataHandling\\CalFiles"; }
 
 private:
   /// Map containing the detector entries found in the *.cal file. The key is
diff --git a/Framework/Algorithms/inc/MantidAlgorithms/SaveGSASInstrumentFile.h b/Framework/Algorithms/inc/MantidAlgorithms/SaveGSASInstrumentFile.h
index 1a0b8b8e908eff0085d98ba58c6a420bfa3e4d74..c8d8f437ab46499fda2ad2ec054811d9871016d6 100644
--- a/Framework/Algorithms/inc/MantidAlgorithms/SaveGSASInstrumentFile.h
+++ b/Framework/Algorithms/inc/MantidAlgorithms/SaveGSASInstrumentFile.h
@@ -52,7 +52,7 @@ public:
   /// Algorithm's version
   virtual int version() const { return (1); }
   /// Algorithm's category for identification
-  virtual const std::string category() const { return "Diffraction"; }
+  virtual const std::string category() const { return "Diffraction\\DataHandling"; }
 
 private:
   /// Initialisation code
diff --git a/Framework/Algorithms/inc/MantidAlgorithms/StripVanadiumPeaks.h b/Framework/Algorithms/inc/MantidAlgorithms/StripVanadiumPeaks.h
index 74640cdb65c9cb4913fe8ed2274facb83ffebf51..a91b5d785826cddd1479952ee4f40c4c350a3305 100644
--- a/Framework/Algorithms/inc/MantidAlgorithms/StripVanadiumPeaks.h
+++ b/Framework/Algorithms/inc/MantidAlgorithms/StripVanadiumPeaks.h
@@ -75,7 +75,7 @@ public:
   virtual int version() const { return (1); }
   /// Algorithm's category for identification
   virtual const std::string category() const {
-    return "CorrectionFunctions\\PeakCorrections;Optimization\\PeakFinding;Diffraction";
+    return "CorrectionFunctions\\PeakCorrections;Optimization\\PeakFinding;Diffraction\\Corrections";
   }
 
 private:
diff --git a/Framework/Algorithms/inc/MantidAlgorithms/StripVanadiumPeaks2.h b/Framework/Algorithms/inc/MantidAlgorithms/StripVanadiumPeaks2.h
index 66e410d61d835e662284af13f744686d55d12c6f..e19062e65ab86880f3e2fcf5182b04d92e313caa 100644
--- a/Framework/Algorithms/inc/MantidAlgorithms/StripVanadiumPeaks2.h
+++ b/Framework/Algorithms/inc/MantidAlgorithms/StripVanadiumPeaks2.h
@@ -44,7 +44,7 @@ public:
   virtual int version() const { return 2; }
   /// Algorithm's category for identification
   virtual const std::string category() const {
-    return "CorrectionFunctions\\PeakCorrections;Optimization\\PeakFinding;Diffraction";
+    return "CorrectionFunctions\\PeakCorrections;Optimization\\PeakFinding;Diffraction\\Corrections";
   }
   /// Summary of algorithms purpose
   virtual const std::string summary() const {
diff --git a/Framework/Algorithms/src/AlignDetectors.cpp b/Framework/Algorithms/src/AlignDetectors.cpp
index 742f56343e698b4fae2c524d7927248922e68e0c..c958ce703b4257837b0a6f08c283fb01d5476ee0 100644
--- a/Framework/Algorithms/src/AlignDetectors.cpp
+++ b/Framework/Algorithms/src/AlignDetectors.cpp
@@ -145,7 +145,7 @@ const std::string AlignDetectors::name() const { return "AlignDetectors"; }
 
 int AlignDetectors::version() const { return 1; }
 
-const std::string AlignDetectors::category() const { return "Diffraction"; }
+const std::string AlignDetectors::category() const { return "Diffraction\\Calibration"; }
 
 const std::string AlignDetectors::summary() const {
   return "Performs a unit change from TOF to dSpacing, correcting the X "
diff --git a/Framework/Algorithms/src/CalculateDIFC.cpp b/Framework/Algorithms/src/CalculateDIFC.cpp
index 0c8dc30be7a38f0a327df0b6b2a3017ed1243e94..ac0b6afecaee097d1badb2838a2d4c7b993dade4 100644
--- a/Framework/Algorithms/src/CalculateDIFC.cpp
+++ b/Framework/Algorithms/src/CalculateDIFC.cpp
@@ -36,7 +36,7 @@ const std::string CalculateDIFC::name() const { return "CalculateDIFC"; }
 int CalculateDIFC::version() const { return 1; }
 
 /// Algorithm's category for identification. @see Algorithm::category
-const std::string CalculateDIFC::category() const { return "Diffraction"; }
+const std::string CalculateDIFC::category() const { return "Diffraction\\Utility"; }
 
 /// Algorithm's summary for use in the GUI and help. @see Algorithm::summary
 const std::string CalculateDIFC::summary() const {
diff --git a/Framework/Algorithms/src/ConvertDiffCal.cpp b/Framework/Algorithms/src/ConvertDiffCal.cpp
index 6b887627b9f8d8e1872b4d38544145bf10c5c7a9..15086148079bc77e0aa23aa4458c8b6c94001c91 100644
--- a/Framework/Algorithms/src/ConvertDiffCal.cpp
+++ b/Framework/Algorithms/src/ConvertDiffCal.cpp
@@ -44,7 +44,7 @@ const std::string ConvertDiffCal::name() const { return "ConvertDiffCal"; }
 int ConvertDiffCal::version() const { return 1; }
 
 /// Algorithm's category for identification. @see Algorithm::category
-const std::string ConvertDiffCal::category() const { return "Diffraction"; }
+const std::string ConvertDiffCal::category() const { return "Diffraction\\Utility"; }
 
 /// Algorithm's summary for use in the GUI and help. @see Algorithm::summary
 const std::string ConvertDiffCal::summary() const {
diff --git a/Framework/Algorithms/src/EditInstrumentGeometry.cpp b/Framework/Algorithms/src/EditInstrumentGeometry.cpp
index 929265f98cb1651fbac943be21c829d1c1971655..60bb3606852676310fd8831dab3155462411c132 100644
--- a/Framework/Algorithms/src/EditInstrumentGeometry.cpp
+++ b/Framework/Algorithms/src/EditInstrumentGeometry.cpp
@@ -32,7 +32,7 @@ const std::string EditInstrumentGeometry::name() const {
 }
 
 const std::string EditInstrumentGeometry::category() const {
-  return "Diffraction";
+  return "Diffraction\\DataHandling;DataHandling\\Instrument";
 }
 
 int EditInstrumentGeometry::version() const { return 1; }
diff --git a/Framework/Algorithms/src/EstimateResolutionDiffraction.cpp b/Framework/Algorithms/src/EstimateResolutionDiffraction.cpp
index 22889f58a46289d350254477958cc2d8b2a5e05a..2c39dfdf1fd20134c28b40ca86667af244aea883 100644
--- a/Framework/Algorithms/src/EstimateResolutionDiffraction.cpp
+++ b/Framework/Algorithms/src/EstimateResolutionDiffraction.cpp
@@ -61,7 +61,7 @@ const std::string EstimateResolutionDiffraction::summary() const {
 int EstimateResolutionDiffraction::version() const { return 1; }
 
 const std::string EstimateResolutionDiffraction::category() const {
-  return "Diffraction";
+  return "Diffraction\\Utility";
 }
 
 //----------------------------------------------------------------------------------------------
diff --git a/Framework/Algorithms/src/PDFFourierTransform.cpp b/Framework/Algorithms/src/PDFFourierTransform.cpp
index c535813ba1e16eb49cdb089c19f3a28d6dbf4c1e..ff91ab5cf25bbd550358b38f7a63f31ec7c662b7 100644
--- a/Framework/Algorithms/src/PDFFourierTransform.cpp
+++ b/Framework/Algorithms/src/PDFFourierTransform.cpp
@@ -51,7 +51,7 @@ const std::string PDFFourierTransform::name() const {
 int PDFFourierTransform::version() const { return 1; }
 
 const std::string PDFFourierTransform::category() const {
-  return "Diffraction";
+  return "Diffraction\\Utility";
 }
 
 //----------------------------------------------------------------------------------------------
diff --git a/Framework/Algorithms/src/RemoveLowResTOF.cpp b/Framework/Algorithms/src/RemoveLowResTOF.cpp
index 47c65f788a2dcedd00454e6deedd04158edf912f..a5658dbd3a60890f214d99edc805f2c99a79c951 100644
--- a/Framework/Algorithms/src/RemoveLowResTOF.cpp
+++ b/Framework/Algorithms/src/RemoveLowResTOF.cpp
@@ -42,7 +42,7 @@ const string RemoveLowResTOF::name() const { return "RemoveLowResTOF"; }
 int RemoveLowResTOF::version() const { return 1; }
 
 /// Algorithm's category for identification overriding a virtual method
-const string RemoveLowResTOF::category() const { return "Diffraction"; }
+const string RemoveLowResTOF::category() const { return "Diffraction\\Corrections"; }
 
 void RemoveLowResTOF::init() {
   auto wsValidator = boost::make_shared<CompositeValidator>();
diff --git a/Framework/CurveFitting/inc/MantidCurveFitting/Algorithms/FitPowderDiffPeaks.h b/Framework/CurveFitting/inc/MantidCurveFitting/Algorithms/FitPowderDiffPeaks.h
index 5436f304f29d3fd7a7076d4dcfca9dab48dd0b03..1c983df6b4b5e0c65c3e86b832a65ee65c46d3ec 100644
--- a/Framework/CurveFitting/inc/MantidCurveFitting/Algorithms/FitPowderDiffPeaks.h
+++ b/Framework/CurveFitting/inc/MantidCurveFitting/Algorithms/FitPowderDiffPeaks.h
@@ -74,7 +74,7 @@ public:
   virtual int version() const { return 1; }
 
   /// Algorithm's category for identification overriding a virtual method
-  virtual const std::string category() const { return "Diffraction"; }
+  virtual const std::string category() const { return "Diffraction\\Fitting"; }
 
 private:
   /// Implement abstract Algorithm methods
diff --git a/Framework/CurveFitting/inc/MantidCurveFitting/Algorithms/LeBailFit.h b/Framework/CurveFitting/inc/MantidCurveFitting/Algorithms/LeBailFit.h
index dd92a572da7db455acf9c7552bbc80132b9fb799..7a76297e1492b2e4bd941d6dfe318552309ac8af 100644
--- a/Framework/CurveFitting/inc/MantidCurveFitting/Algorithms/LeBailFit.h
+++ b/Framework/CurveFitting/inc/MantidCurveFitting/Algorithms/LeBailFit.h
@@ -88,7 +88,7 @@ public:
   virtual int version() const { return 1; }
 
   /// Algorithm's category for identification overriding a virtual method
-  virtual const std::string category() const { return "Diffraction"; }
+  virtual const std::string category() const { return "Diffraction\\Fitting"; }
 
 private:
   // Implement abstract Algorithm methods
diff --git a/Framework/CurveFitting/inc/MantidCurveFitting/Algorithms/PawleyFit.h b/Framework/CurveFitting/inc/MantidCurveFitting/Algorithms/PawleyFit.h
index 7bddf3ec39884df67505bda3e8c5f800eda0ed2e..39ae763992dd249dbf298d0fdff052d8f75370af 100644
--- a/Framework/CurveFitting/inc/MantidCurveFitting/Algorithms/PawleyFit.h
+++ b/Framework/CurveFitting/inc/MantidCurveFitting/Algorithms/PawleyFit.h
@@ -72,7 +72,7 @@ public:
   const std::string name() const { return "PawleyFit"; }
   int version() const { return 1; }
   const std::string summary() const;
-  const std::string category() const { return "Diffraction"; }
+  const std::string category() const { return "Diffraction\\Fitting"; }
 
 protected:
   double getTransformedCenter(double d, const Kernel::Unit_sptr &unit) const;
diff --git a/Framework/CurveFitting/inc/MantidCurveFitting/Algorithms/RefinePowderInstrumentParameters.h b/Framework/CurveFitting/inc/MantidCurveFitting/Algorithms/RefinePowderInstrumentParameters.h
index 9d3eeba57a4f02f257190c767a07f51f4f6f6df0..fc90a7c52679b442bc320e4db1ada380c5f76fb7 100644
--- a/Framework/CurveFitting/inc/MantidCurveFitting/Algorithms/RefinePowderInstrumentParameters.h
+++ b/Framework/CurveFitting/inc/MantidCurveFitting/Algorithms/RefinePowderInstrumentParameters.h
@@ -69,7 +69,7 @@ public:
   virtual int version() const { return 2; }
 
   /// Algorithm's category for identification overriding a virtual method
-  virtual const std::string category() const { return "Diffraction"; }
+  virtual const std::string category() const { return "Diffraction\\Fitting"; }
 
 private:
   // Implement abstract Algorithm methods
diff --git a/Framework/CurveFitting/inc/MantidCurveFitting/Algorithms/RefinePowderInstrumentParameters3.h b/Framework/CurveFitting/inc/MantidCurveFitting/Algorithms/RefinePowderInstrumentParameters3.h
index 56875c6c88568c1c49d67c13d29018a34627fb3b..764b6e74f1a71d903c7a7dd2239f7b4fe852e3e4 100644
--- a/Framework/CurveFitting/inc/MantidCurveFitting/Algorithms/RefinePowderInstrumentParameters3.h
+++ b/Framework/CurveFitting/inc/MantidCurveFitting/Algorithms/RefinePowderInstrumentParameters3.h
@@ -57,7 +57,7 @@ public:
   virtual int version() const { return 3; }
 
   /// Algorithm's category for identification overriding a virtual method
-  virtual const std::string category() const { return "Diffraction"; }
+  virtual const std::string category() const { return "Diffraction\\Fitting"; }
 
 private:
   /// Implement abstract Algorithm methods
diff --git a/Framework/DataHandling/inc/MantidDataHandling/LoadCalFile.h b/Framework/DataHandling/inc/MantidDataHandling/LoadCalFile.h
index 5768b9268a7da06aae3d8af34fe1b7d5f894c846..ecdc7eb2bc8212b8ae7b57e4e437ee8b4eabd570 100644
--- a/Framework/DataHandling/inc/MantidDataHandling/LoadCalFile.h
+++ b/Framework/DataHandling/inc/MantidDataHandling/LoadCalFile.h
@@ -36,7 +36,7 @@ public:
   virtual int version() const { return 1; };
   /// Algorithm's category for identification
   virtual const std::string category() const {
-    return "DataHandling\\Text;Diffraction";
+    return "DataHandling\\Text;Diffraction\\DataHandling\\CalFiles";
   }
 
   static void getInstrument3WaysInit(Mantid::API::Algorithm *alg);
diff --git a/Framework/DataHandling/inc/MantidDataHandling/LoadFullprofResolution.h b/Framework/DataHandling/inc/MantidDataHandling/LoadFullprofResolution.h
index 911826388958100f5d1aad0264ee0fd4c87209aa..79e16d97b4003f79acad2e260a8ccfdf8c9fe506 100644
--- a/Framework/DataHandling/inc/MantidDataHandling/LoadFullprofResolution.h
+++ b/Framework/DataHandling/inc/MantidDataHandling/LoadFullprofResolution.h
@@ -51,7 +51,7 @@ public:
   virtual int version() const { return 1; }
 
   /// Algorithm's category for identification overriding a virtual method
-  virtual const std::string category() const { return "Diffraction"; }
+  virtual const std::string category() const { return "Diffraction\\DataHandling"; }
   /// Summary of algorithms purpose
   virtual const std::string summary() const {
     return "Load Fullprof's resolution (.irf) file to one or multiple "
diff --git a/Framework/DataHandling/inc/MantidDataHandling/LoadGSASInstrumentFile.h b/Framework/DataHandling/inc/MantidDataHandling/LoadGSASInstrumentFile.h
index d26c348082c97f7f8cefdd902dcdb9fb7a6633f0..5099288ac9b2a6bb5ed0e969396c0ade84eec4e2 100644
--- a/Framework/DataHandling/inc/MantidDataHandling/LoadGSASInstrumentFile.h
+++ b/Framework/DataHandling/inc/MantidDataHandling/LoadGSASInstrumentFile.h
@@ -54,7 +54,7 @@ public:
   virtual int version() const { return 1; }
 
   /// Algorithm's category for identification overriding a virtual method
-  virtual const std::string category() const { return "Diffraction"; }
+  virtual const std::string category() const { return "Diffraction\\DataHandling"; }
 
 private:
   /// Implement abstract Algorithm methods
diff --git a/Framework/DataHandling/inc/MantidDataHandling/LoadGSS.h b/Framework/DataHandling/inc/MantidDataHandling/LoadGSS.h
index a0a63b489391a13caab2da6421b691c27d1e07c2..141174955d001b183fd96083f01e9d2fe270598b 100644
--- a/Framework/DataHandling/inc/MantidDataHandling/LoadGSS.h
+++ b/Framework/DataHandling/inc/MantidDataHandling/LoadGSS.h
@@ -61,7 +61,7 @@ public:
 
   /// Algorithm's category for identification
   virtual const std::string category() const {
-    return "Diffraction;DataHandling\\Text";
+    return "Diffraction\\DataHandling;DataHandling\\Text";
   }
 
   /// Returns a confidence value that this algorithm can load a file
diff --git a/Framework/DataHandling/inc/MantidDataHandling/LoadIsawDetCal.h b/Framework/DataHandling/inc/MantidDataHandling/LoadIsawDetCal.h
index 65dce045094d0c534654bed7749e496ba0c94b40..bc1431107eb0b5b333bb70cd5eb2889a42fdc7ff 100644
--- a/Framework/DataHandling/inc/MantidDataHandling/LoadIsawDetCal.h
+++ b/Framework/DataHandling/inc/MantidDataHandling/LoadIsawDetCal.h
@@ -62,7 +62,7 @@ public:
   virtual int version() const { return 1; }
   /// Algorithm's category for identification overriding a virtual method
   virtual const std::string category() const {
-    return "Diffraction;DataHandling\\Isaw";
+    return "Diffraction\\DataHandling;DataHandling\\Isaw";
   }
   /// Function to optimize
   void center(double x, double y, double z, std::string detname,
diff --git a/Framework/DataHandling/inc/MantidDataHandling/LoadPDFgetNFile.h b/Framework/DataHandling/inc/MantidDataHandling/LoadPDFgetNFile.h
index 1ae3fbd5dd8f503fd0e0fcbc3f1c3664fba84cd2..660e38d32940b40f23ad8d13aa19781820d12a72 100644
--- a/Framework/DataHandling/inc/MantidDataHandling/LoadPDFgetNFile.h
+++ b/Framework/DataHandling/inc/MantidDataHandling/LoadPDFgetNFile.h
@@ -49,7 +49,7 @@ public:
 
   /// Algorithm's category for identification overriding a virtual method
   virtual const std::string category() const {
-    return "Diffraction;DataHandling\\Text";
+    return "Diffraction\\DataHandling;DataHandling\\Text";
   }
 
 private:
diff --git a/Framework/DataHandling/inc/MantidDataHandling/LoadVulcanCalFile.h b/Framework/DataHandling/inc/MantidDataHandling/LoadVulcanCalFile.h
index ee8dc7ceeaba5874eb49bf0172a19c49c25dd503..61a049fc32eb1f44e831b227dd5cf6df3b9b1b63 100644
--- a/Framework/DataHandling/inc/MantidDataHandling/LoadVulcanCalFile.h
+++ b/Framework/DataHandling/inc/MantidDataHandling/LoadVulcanCalFile.h
@@ -41,7 +41,7 @@ public:
   virtual int version() const { return 1; }
   /// Algorithm's category for identification
   virtual const std::string category() const {
-    return "DataHandling\\Text;Diffraction";
+    return "DataHandling\\Text;Diffraction\\DataHandling";
   }
 
   void getInstrument3WaysInit();
diff --git a/Framework/DataHandling/inc/MantidDataHandling/SaveCalFile.h b/Framework/DataHandling/inc/MantidDataHandling/SaveCalFile.h
index ff69ed406812a1a36bce30677d7488a480415c87..7702f440226ce5d8efd8da0f80d91175c57c62a7 100644
--- a/Framework/DataHandling/inc/MantidDataHandling/SaveCalFile.h
+++ b/Framework/DataHandling/inc/MantidDataHandling/SaveCalFile.h
@@ -34,7 +34,7 @@ public:
   virtual int version() const { return 1; };
   /// Algorithm's category for identification
   virtual const std::string category() const {
-    return "DataHandling\\Text;Diffraction";
+    return "DataHandling\\Text;Diffraction\\DataHandling\\CalFiles";
   }
 
   void saveCalFile(const std::string &calFileName,
diff --git a/Framework/DataHandling/inc/MantidDataHandling/SaveFocusedXYE.h b/Framework/DataHandling/inc/MantidDataHandling/SaveFocusedXYE.h
index ce609a1975901d032e4d201c7f76272960e7874a..6f939671be15c1ea1d69e73af05a8573d0f3f842 100644
--- a/Framework/DataHandling/inc/MantidDataHandling/SaveFocusedXYE.h
+++ b/Framework/DataHandling/inc/MantidDataHandling/SaveFocusedXYE.h
@@ -78,7 +78,7 @@ public:
   virtual int version() const { return (1); }
   /// Algorithm's category for identification
   virtual const std::string category() const {
-    return "Diffraction;DataHandling\\Text";
+    return "Diffraction\\DataHandling;DataHandling\\Text";
   }
 
 private:
diff --git a/Framework/DataHandling/inc/MantidDataHandling/SaveFullprofResolution.h b/Framework/DataHandling/inc/MantidDataHandling/SaveFullprofResolution.h
index eefa2a3a9f3d5f4b79b77cc7b5c69262e46351c1..8f5f301a4b14f31253b66ea1a88975b0f865e223 100644
--- a/Framework/DataHandling/inc/MantidDataHandling/SaveFullprofResolution.h
+++ b/Framework/DataHandling/inc/MantidDataHandling/SaveFullprofResolution.h
@@ -48,7 +48,7 @@ public:
   virtual int version() const { return (1); }
   /// Algorithm's category for identification
   virtual const std::string category() const {
-    return "Diffraction;DataHandling\\Text";
+    return "Diffraction\\DataHandling;DataHandling\\Text";
   }
 
 private:
diff --git a/Framework/DataHandling/inc/MantidDataHandling/SaveGSS.h b/Framework/DataHandling/inc/MantidDataHandling/SaveGSS.h
index a3929b434cb302f12a4dea8c4549449cd78f9a02..805b2a3a9b873a0f2ce02e6ec54b6578a6ac6738 100644
--- a/Framework/DataHandling/inc/MantidDataHandling/SaveGSS.h
+++ b/Framework/DataHandling/inc/MantidDataHandling/SaveGSS.h
@@ -77,7 +77,7 @@ public:
   virtual int version() const { return (1); }
   /// Algorithm's category for identification
   virtual const std::string category() const {
-    return "Diffraction;DataHandling\\Text";
+    return "Diffraction\\DataHandling;DataHandling\\Text";
   }
 
 private:
diff --git a/Framework/DataHandling/inc/MantidDataHandling/SaveIsawDetCal.h b/Framework/DataHandling/inc/MantidDataHandling/SaveIsawDetCal.h
index 6c83744d972e70821d4c06a6714596416720816c..65a87faa01647df4b9efc5c7e6ad3ba816d17926 100644
--- a/Framework/DataHandling/inc/MantidDataHandling/SaveIsawDetCal.h
+++ b/Framework/DataHandling/inc/MantidDataHandling/SaveIsawDetCal.h
@@ -50,7 +50,7 @@ public:
   virtual int version() const { return 1; };
   /// Algorithm's category for identification
   virtual const std::string category() const {
-    return "Diffraction;DataHandling\\Isaw";
+    return "Diffraction\\DataHandling;DataHandling\\Isaw";
   }
 
 private:
diff --git a/Framework/DataHandling/inc/MantidDataHandling/SaveNXTomo.h b/Framework/DataHandling/inc/MantidDataHandling/SaveNXTomo.h
index 2144bc53f8ae131c369c412d3a982fcb4131c0f7..3c37c471fd0407b6751723716a9af6f701077976 100644
--- a/Framework/DataHandling/inc/MantidDataHandling/SaveNXTomo.h
+++ b/Framework/DataHandling/inc/MantidDataHandling/SaveNXTomo.h
@@ -65,7 +65,7 @@ public:
 
   /// Algorithm's category for identification
   virtual const std::string category() const {
-    return "DataHandling\\Nexus;DataHandling\\Tomography;Diffraction";
+    return "DataHandling\\Nexus;DataHandling\\Tomography;Diffraction\\DataHandling";
   }
 
 private:
diff --git a/Framework/DataHandling/inc/MantidDataHandling/SaveOpenGenieAscii.h b/Framework/DataHandling/inc/MantidDataHandling/SaveOpenGenieAscii.h
index 27ac2edade3b4ea6b0d164fda4b51cbf23c3e8fa..7ee37d3637d7c76390dcfec93f7cfb4d85a7b5de 100644
--- a/Framework/DataHandling/inc/MantidDataHandling/SaveOpenGenieAscii.h
+++ b/Framework/DataHandling/inc/MantidDataHandling/SaveOpenGenieAscii.h
@@ -32,7 +32,7 @@ public:
 
   /// Algorithm's category for identification
   virtual const std::string category() const {
-    return "Diffraction;DataHandling\\Text";
+    return "Diffraction\\DataHandling;DataHandling\\Text";
   }
 
 private:
diff --git a/Framework/DataHandling/src/GenerateGroupingPowder.cpp b/Framework/DataHandling/src/GenerateGroupingPowder.cpp
index 20b26d234e63c16da632dad78dbb98ace93df955..a4e44686a1487535a287dfbb68b71fdaf221ad33 100644
--- a/Framework/DataHandling/src/GenerateGroupingPowder.cpp
+++ b/Framework/DataHandling/src/GenerateGroupingPowder.cpp
@@ -57,7 +57,7 @@ int GenerateGroupingPowder::version() const { return 1; }
 
 /// Algorithm's category for identification. @see Algorithm::category
 const std::string GenerateGroupingPowder::category() const {
-  return "DataHandling\\Grouping;Transforms\\Grouping;Diffraction";
+  return "DataHandling\\Grouping;Transforms\\Grouping;Diffraction\\Utility";
 }
 
 //----------------------------------------------------------------------------------------------
diff --git a/Framework/DataHandling/src/LoadDiffCal.cpp b/Framework/DataHandling/src/LoadDiffCal.cpp
index 6766b4496c1a7d91ac8185c91817e249fecb568e..b07bd86a8aa94fd51867c1f6bbcf79d659d6d740 100644
--- a/Framework/DataHandling/src/LoadDiffCal.cpp
+++ b/Framework/DataHandling/src/LoadDiffCal.cpp
@@ -54,7 +54,7 @@ int LoadDiffCal::version() const { return 1; }
 
 /// Algorithm's category for identification. @see Algorithm::category
 const std::string LoadDiffCal::category() const {
-  return "DataHandling\\Instrument;Diffraction";
+  return "DataHandling\\Instrument;Diffraction\\DataHandling";
 }
 
 /// Algorithm's summary for use in the GUI and help. @see Algorithm::summary
diff --git a/Framework/DataHandling/src/SaveDiffCal.cpp b/Framework/DataHandling/src/SaveDiffCal.cpp
index a586251912ee069f424b9aae01ec0dc2c98e3f5d..9d17f2e8a92aeb6c2af8d0c4ba3930c6e4e0c41b 100644
--- a/Framework/DataHandling/src/SaveDiffCal.cpp
+++ b/Framework/DataHandling/src/SaveDiffCal.cpp
@@ -48,7 +48,7 @@ int SaveDiffCal::version() const { return 1; }
 
 /// Algorithm's category for identification. @see Algorithm::category
 const std::string SaveDiffCal::category() const {
-  return "DataHandling\\Instrument;Diffraction";
+  return "DataHandling\\Instrument;Diffraction\\DataHandling";
 }
 
 /// Algorithm's summary for use in the GUI and help. @see Algorithm::summary
diff --git a/Framework/MDAlgorithms/inc/MantidMDAlgorithms/ConvertCWPDMDToSpectra.h b/Framework/MDAlgorithms/inc/MantidMDAlgorithms/ConvertCWPDMDToSpectra.h
index 5dd6f15313415e93cf605093baa1bce5e52f764e..fd22269a522475efe99455ab05082c9b7d433f66 100644
--- a/Framework/MDAlgorithms/inc/MantidMDAlgorithms/ConvertCWPDMDToSpectra.h
+++ b/Framework/MDAlgorithms/inc/MantidMDAlgorithms/ConvertCWPDMDToSpectra.h
@@ -121,7 +121,7 @@ public:
 
   /// Algorithm's category for identification
   virtual const std::string category() const {
-    return "Diffraction;MDAlgorithms";
+    return "Diffraction\\ConstantWavelength;Diffraction\\Focussing;MDAlgorithms";
   }
 
 private:
diff --git a/Framework/MDAlgorithms/inc/MantidMDAlgorithms/ConvertCWSDExpToMomentum.h b/Framework/MDAlgorithms/inc/MantidMDAlgorithms/ConvertCWSDExpToMomentum.h
index e4b799f2f49c6336b4ed4165e64c870d5e219a6d..b0d6b716db12c503e974a07b3dd7372b8628d6bd 100644
--- a/Framework/MDAlgorithms/inc/MantidMDAlgorithms/ConvertCWSDExpToMomentum.h
+++ b/Framework/MDAlgorithms/inc/MantidMDAlgorithms/ConvertCWSDExpToMomentum.h
@@ -52,7 +52,7 @@ public:
 
   /// Algorithm's category for identification
   virtual const std::string category() const {
-    return "Diffraction;DataHandling\\Text";
+    return "Diffraction\\ConstantWavelength;DataHandling\\Text";
   }
 
 private:
diff --git a/Framework/MDAlgorithms/inc/MantidMDAlgorithms/ConvertCWSDMDtoHKL.h b/Framework/MDAlgorithms/inc/MantidMDAlgorithms/ConvertCWSDMDtoHKL.h
index 6879be0456ee797b4df6442510d5ad6894024197..220f25cf9359458f23ef9d4e5cc1e56c07d80e72 100644
--- a/Framework/MDAlgorithms/inc/MantidMDAlgorithms/ConvertCWSDMDtoHKL.h
+++ b/Framework/MDAlgorithms/inc/MantidMDAlgorithms/ConvertCWSDMDtoHKL.h
@@ -55,7 +55,7 @@ public:
 
   /// Algorithm's category for identification
   virtual const std::string category() const {
-    return "Diffraction;MDAlgorithms";
+    return "Diffraction\\ConstantWavelength;MDAlgorithms";
   }
 
 private:
diff --git a/Framework/MDAlgorithms/inc/MantidMDAlgorithms/ConvertSpiceDataToRealSpace.h b/Framework/MDAlgorithms/inc/MantidMDAlgorithms/ConvertSpiceDataToRealSpace.h
index 833c7e3bb54dc7bf07d99edf5be6a77378c97c2f..39f4794955e691a5c75df3cc3d94e072ba80a3c1 100644
--- a/Framework/MDAlgorithms/inc/MantidMDAlgorithms/ConvertSpiceDataToRealSpace.h
+++ b/Framework/MDAlgorithms/inc/MantidMDAlgorithms/ConvertSpiceDataToRealSpace.h
@@ -54,7 +54,7 @@ public:
 
   /// Algorithm's category for identification
   virtual const std::string category() const {
-    return "Diffraction;DataHandling\\Text";
+    return "Diffraction\\ConstantWavelength;DataHandling\\Text";
   }
 
   /// Returns a confidence value that this algorithm can load a file
diff --git a/Framework/MDAlgorithms/inc/MantidMDAlgorithms/GetSpiceDataRawCountsFromMD.h b/Framework/MDAlgorithms/inc/MantidMDAlgorithms/GetSpiceDataRawCountsFromMD.h
index 37fb8bddb85e71570080f3fdd08841151677107b..f574cf824ad62504780768ddde1e291fd20b1d3d 100644
--- a/Framework/MDAlgorithms/inc/MantidMDAlgorithms/GetSpiceDataRawCountsFromMD.h
+++ b/Framework/MDAlgorithms/inc/MantidMDAlgorithms/GetSpiceDataRawCountsFromMD.h
@@ -58,7 +58,7 @@ public:
 
   /// Algorithm's category for identification
   virtual const std::string category() const {
-    return "Diffraction";
+    return "Diffraction\\ConstantWavelength";
   }
 
 private:
diff --git a/Framework/PythonInterface/plugins/algorithms/CalibrateRectangularDetectors.py b/Framework/PythonInterface/plugins/algorithms/CalibrateRectangularDetectors.py
index 85c5e60d2f436414a7189378fa43a8fccb6aaf6b..ecd3b61b0b7e35287ce0183b39d609f6221808c1 100644
--- a/Framework/PythonInterface/plugins/algorithms/CalibrateRectangularDetectors.py
+++ b/Framework/PythonInterface/plugins/algorithms/CalibrateRectangularDetectors.py
@@ -39,7 +39,7 @@ class CalibrateRectangularDetectors(PythonAlgorithm):
     _binning = None
 
     def category(self):
-        return "Diffraction"
+        return "Diffraction\\Calibration"
 
     def name(self):
         return "CalibrateRectangularDetectors"
diff --git a/Framework/PythonInterface/plugins/algorithms/CollectHB3AExperimentInfo.py b/Framework/PythonInterface/plugins/algorithms/CollectHB3AExperimentInfo.py
index 3a63c7bb3ea9e21bcc69916c955933a965bdc214..39deb7e480f820add40bd42de0036200dd1cdeb7 100644
--- a/Framework/PythonInterface/plugins/algorithms/CollectHB3AExperimentInfo.py
+++ b/Framework/PythonInterface/plugins/algorithms/CollectHB3AExperimentInfo.py
@@ -38,7 +38,7 @@ class CollectHB3AExperimentInfo(PythonAlgorithm):
     def category(self):
         """ Category
         """
-        return "Diffraction"
+        return "Diffraction\\ConstantWavelength"
 
     def name(self):
         """ Algorithm name
diff --git a/Framework/PythonInterface/plugins/algorithms/CreateLeBailFitInput.py b/Framework/PythonInterface/plugins/algorithms/CreateLeBailFitInput.py
index 43c4a99844a16e072a17d0e83df1108b183d2f81..4217afb35420a6e7cb4042475d891d3475e572f8 100644
--- a/Framework/PythonInterface/plugins/algorithms/CreateLeBailFitInput.py
+++ b/Framework/PythonInterface/plugins/algorithms/CreateLeBailFitInput.py
@@ -15,7 +15,7 @@ class CreateLeBailFitInput(PythonAlgorithm):
     def category(self):
         """
         """
-        return "Diffraction;Utility\\Workspaces"
+        return "Diffraction\\Fitting;Utility\\Workspaces"
 
     def name(self):
         """
diff --git a/Framework/PythonInterface/plugins/algorithms/ExaminePowderDiffProfile.py b/Framework/PythonInterface/plugins/algorithms/ExaminePowderDiffProfile.py
index 80822b19e7302661c925f6a2d3aafd9d74f2d896..f2ec6119be5459d3a46d905547d0622d9fba429b 100644
--- a/Framework/PythonInterface/plugins/algorithms/ExaminePowderDiffProfile.py
+++ b/Framework/PythonInterface/plugins/algorithms/ExaminePowderDiffProfile.py
@@ -31,7 +31,7 @@ class ExaminePowderDiffProfile(PythonAlgorithm):
     def category(self):
         """
         """
-        return "Diffraction;Utility"
+        return "Diffraction\\Utility"
 
     def name(self):
         """
diff --git a/Framework/PythonInterface/plugins/algorithms/LoadFullprofFile.py b/Framework/PythonInterface/plugins/algorithms/LoadFullprofFile.py
index 8ce3875c3f1f31650fdf8ee17295dc74d955ab2c..86901a7e0adaae915139c11b1dfc6b02e6291afd 100644
--- a/Framework/PythonInterface/plugins/algorithms/LoadFullprofFile.py
+++ b/Framework/PythonInterface/plugins/algorithms/LoadFullprofFile.py
@@ -16,7 +16,7 @@ class LoadFullprofFile(PythonAlgorithm):
     def category(self):
         """
         """
-        return "Diffraction;Utility"
+        return "Diffraction\\DataHandling"
 
     def name(self):
         """
diff --git a/Framework/PythonInterface/plugins/algorithms/MaskWorkspaceToCalFile.py b/Framework/PythonInterface/plugins/algorithms/MaskWorkspaceToCalFile.py
index 45b14634e992e205cf96e8bffaeca75dc33780ec..d8b91094a065a31926de9f1b220283bcf1216ddb 100644
--- a/Framework/PythonInterface/plugins/algorithms/MaskWorkspaceToCalFile.py
+++ b/Framework/PythonInterface/plugins/algorithms/MaskWorkspaceToCalFile.py
@@ -16,7 +16,7 @@ class QueryValue(object):
 class MaskWorkspaceToCalFile(PythonAlgorithm):
 
     def category(self):
-        return "DataHandling\\Text;Diffraction"
+        return "DataHandling\\Text;Diffraction\\DataHandling;Diffraction\\Masking"
 
     def name(self):
         return "MaskWorkspaceToCalFile"
diff --git a/Framework/PythonInterface/plugins/algorithms/MergeCalFiles.py b/Framework/PythonInterface/plugins/algorithms/MergeCalFiles.py
index a27e96214a2bf2d53617de25156b3667e2191b54..e4e8b7f218489ca2701e21a81c2b672c50a90580 100644
--- a/Framework/PythonInterface/plugins/algorithms/MergeCalFiles.py
+++ b/Framework/PythonInterface/plugins/algorithms/MergeCalFiles.py
@@ -5,7 +5,7 @@ from mantid.kernel import *
 class MergeCalFiles(PythonAlgorithm):
 
     def category(self):
-        return "DataHandling\\Text;Diffraction"
+        return "DataHandling\\Text;Diffraction\\DataHandling\\CalFiles"
 
     def name(self):
         return "MergeCalFiles"
diff --git a/Framework/PythonInterface/plugins/algorithms/RefinePowderDiffProfileSeq.py b/Framework/PythonInterface/plugins/algorithms/RefinePowderDiffProfileSeq.py
index fef53a34b982f612211387687588dd7254d7d8ad..2d3256af9adf1858ed51b41bf2b29b14151e1dc0 100644
--- a/Framework/PythonInterface/plugins/algorithms/RefinePowderDiffProfileSeq.py
+++ b/Framework/PythonInterface/plugins/algorithms/RefinePowderDiffProfileSeq.py
@@ -35,7 +35,7 @@ class RefinePowderDiffProfileSeq(PythonAlgorithm):
     def category(self):
         """ Category
         """
-        return "Diffraction"
+        return "Diffraction\\Fitting"
 
     def name(self):
         """ Algorithm name
diff --git a/Framework/PythonInterface/plugins/algorithms/SNSPowderReduction.py b/Framework/PythonInterface/plugins/algorithms/SNSPowderReduction.py
index 01aa258d0dbbbbc8f3df6e54cf3c0c9e5e3d25e2..6458397c3c55d14cfd335a1a75500b678d97d2c8 100644
--- a/Framework/PythonInterface/plugins/algorithms/SNSPowderReduction.py
+++ b/Framework/PythonInterface/plugins/algorithms/SNSPowderReduction.py
@@ -63,7 +63,7 @@ class SNSPowderReduction(DataProcessorAlgorithm):
     _info = None
 
     def category(self):
-        return "Diffraction"
+        return "Diffraction\\Reduction"
 
     def name(self):
         return "SNSPowderReduction"
diff --git a/Framework/PythonInterface/plugins/algorithms/SaveVulcanGSS.py b/Framework/PythonInterface/plugins/algorithms/SaveVulcanGSS.py
index c7a8720a85299cd3aa18128ab0182ec3ad5697a5..234ded0c5e965ffee6563b640cd9c4f2e0cd49cc 100644
--- a/Framework/PythonInterface/plugins/algorithms/SaveVulcanGSS.py
+++ b/Framework/PythonInterface/plugins/algorithms/SaveVulcanGSS.py
@@ -9,7 +9,7 @@ class SaveVulcanGSS(PythonAlgorithm):
     def category(self):
         """
         """
-        return "Diffraction;Utility"
+        return "Diffraction\\DataHandling"
 
     def name(self):
         """
diff --git a/Framework/PythonInterface/plugins/algorithms/SelectPowderDiffPeaks.py b/Framework/PythonInterface/plugins/algorithms/SelectPowderDiffPeaks.py
index fac88e2cbd3bf8da32762f6bf55bebcb935ec7c0..05e2f8055566d11a87e370f1280ffbd5d6b2e117 100644
--- a/Framework/PythonInterface/plugins/algorithms/SelectPowderDiffPeaks.py
+++ b/Framework/PythonInterface/plugins/algorithms/SelectPowderDiffPeaks.py
@@ -14,7 +14,7 @@ class SelectPowderDiffPeaks(PythonAlgorithm):
     def category(self):
         """
         """
-        return "Diffraction;Utility"
+        return "Diffraction\\Fitting"
 
     def name(self):
         """
diff --git a/Framework/PythonInterface/plugins/algorithms/WorkflowAlgorithms/EVSDiffractionReduction.py b/Framework/PythonInterface/plugins/algorithms/WorkflowAlgorithms/EVSDiffractionReduction.py
index d9f5e77d91e018a4d377325554d59b43240d3e7d..4d02c46c006462ddeca94dfe76ff10d06094e61d 100644
--- a/Framework/PythonInterface/plugins/algorithms/WorkflowAlgorithms/EVSDiffractionReduction.py
+++ b/Framework/PythonInterface/plugins/algorithms/WorkflowAlgorithms/EVSDiffractionReduction.py
@@ -23,7 +23,7 @@ class EVSDiffractionReduction(DataProcessorAlgorithm):
 
 
     def category(self):
-        return 'Diffraction'
+        return 'Diffraction\\Reduction'
 
 
     def summary(self):
diff --git a/Framework/PythonInterface/plugins/algorithms/WorkflowAlgorithms/ISISIndirectDiffractionReduction.py b/Framework/PythonInterface/plugins/algorithms/WorkflowAlgorithms/ISISIndirectDiffractionReduction.py
index e225b4cc29f6dfef67f415bc8e3155ec69c07878..9c1edef264495a42eac76a7722dc8a86e0c07be3 100644
--- a/Framework/PythonInterface/plugins/algorithms/WorkflowAlgorithms/ISISIndirectDiffractionReduction.py
+++ b/Framework/PythonInterface/plugins/algorithms/WorkflowAlgorithms/ISISIndirectDiffractionReduction.py
@@ -29,7 +29,7 @@ class ISISIndirectDiffractionReduction(DataProcessorAlgorithm):
 #------------------------------------------------------------------------------
 
     def category(self):
-        return 'Diffraction'
+        return 'Diffraction\\Reduction'
 
 
     def summary(self):
diff --git a/Framework/PythonInterface/plugins/algorithms/WorkflowAlgorithms/OSIRISDiffractionReduction.py b/Framework/PythonInterface/plugins/algorithms/WorkflowAlgorithms/OSIRISDiffractionReduction.py
index c595f35ddaeb468d4d60af2b64c4cfcb0e1af1b2..7914b9bb632cba908845d5106e6182f84665745e 100644
--- a/Framework/PythonInterface/plugins/algorithms/WorkflowAlgorithms/OSIRISDiffractionReduction.py
+++ b/Framework/PythonInterface/plugins/algorithms/WorkflowAlgorithms/OSIRISDiffractionReduction.py
@@ -208,7 +208,7 @@ class OSIRISDiffractionReduction(PythonAlgorithm):
 
 
     def category(self):
-        return 'Diffraction'
+        return 'Diffraction\\Reduction'
 
     def summary(self):
         return "This Python algorithm performs the operations necessary for the reduction of diffraction data "+\