diff --git a/CommonTools/MVAUtils/BuildFile.xml b/CommonTools/MVAUtils/BuildFile.xml
new file mode 100644
index 0000000000000..26b7b5c239e4e
--- /dev/null
+++ b/CommonTools/MVAUtils/BuildFile.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/CommonTools/MVAUtils/interface/GBRForestTools.h b/CommonTools/MVAUtils/interface/GBRForestTools.h
new file mode 100644
index 0000000000000..9979113edd572
--- /dev/null
+++ b/CommonTools/MVAUtils/interface/GBRForestTools.h
@@ -0,0 +1,27 @@
+#ifndef CommonTools_MVAUtils_GBRForestTools_h
+#define CommonTools_MVAUtils_GBRForestTools_h
+
+//--------------------------------------------------------------------------------------------------
+//
+// GRBForestTools
+//
+// Utility to parse an XML weights files specifying an ensemble of decision trees into a GRBForest.
+//
+// Author: Jonas Rembser
+//--------------------------------------------------------------------------------------------------
+
+
+#include "CondFormats/EgammaObjects/interface/GBRForest.h"
+#include "FWCore/ParameterSet/interface/FileInPath.h"
+
+#include
+
+// Create a GBRForest from an XML weight file
+std::unique_ptr createGBRForest(const std::string &weightsFile);
+std::unique_ptr createGBRForest(const edm::FileInPath &weightsFile);
+
+// Overloaded versions which are taking string vectors by reference to strore the variable names in
+std::unique_ptr createGBRForest(const std::string &weightsFile, std::vector &varNames);
+std::unique_ptr createGBRForest(const edm::FileInPath &weightsFile, std::vector &varNames);
+
+#endif
diff --git a/CommonTools/MVAUtils/interface/TMVAEvaluator.h b/CommonTools/MVAUtils/interface/TMVAEvaluator.h
new file mode 100644
index 0000000000000..3c141b69d3c1f
--- /dev/null
+++ b/CommonTools/MVAUtils/interface/TMVAEvaluator.h
@@ -0,0 +1,50 @@
+#ifndef CommonTools_MVAUtils_TMVAEvaluator_h
+#define CommonTools_MVAUtils_TMVAEvaluator_h
+
+#include