diff --git a/PhysicsAnalysis/CommonTools/ExpressionEvaluation/ExpressionEvaluation/ExpressionParser.h b/PhysicsAnalysis/CommonTools/ExpressionEvaluation/ExpressionEvaluation/ExpressionParser.h
index d73d85c9e57da89e8a4a308298f0fde41466413c..9fb96acc4ebafb7fc95d5adb7b6dca06a001ed75 100644
--- a/PhysicsAnalysis/CommonTools/ExpressionEvaluation/ExpressionEvaluation/ExpressionParser.h
+++ b/PhysicsAnalysis/CommonTools/ExpressionEvaluation/ExpressionEvaluation/ExpressionParser.h
@@ -28,6 +28,9 @@ namespace ExpressionParsing {
       ExpressionParser(IProxyLoader *proxyLoader, IUnitInterpreter *unitInterpreter);
       ~ExpressionParser();
 
+      ExpressionParser (const ExpressionParser&) = delete;
+      ExpressionParser& operator= (const ExpressionParser&) = delete;
+
       bool loadExpression(const std::string &expression);
       StackElement evaluate(); 
       bool evaluateAsBool(); 
diff --git a/PhysicsAnalysis/CommonTools/ExpressionEvaluation/ExpressionEvaluation/SGxAODProxyLoader.h b/PhysicsAnalysis/CommonTools/ExpressionEvaluation/ExpressionEvaluation/SGxAODProxyLoader.h
index da269dfc1162b1d3a9202615da8aa4c83f7b69d0..25038fcf45fc70712bea9a66f35395de16537a85 100644
--- a/PhysicsAnalysis/CommonTools/ExpressionEvaluation/ExpressionEvaluation/SGxAODProxyLoader.h
+++ b/PhysicsAnalysis/CommonTools/ExpressionEvaluation/ExpressionEvaluation/SGxAODProxyLoader.h
@@ -55,6 +55,7 @@ namespace ExpressionParsing {
             : BaseVariableLoader(evtStore), 
             m_containerName(containerName), 
             m_propertyName(propertyName),
+            m_variableType(),
             m_elementProxyLoader(NULL),
             m_initialised(false)
           { 
@@ -149,6 +150,7 @@ namespace ExpressionParsing {
             : BaseVariableLoader(evtStore), 
             m_containerName(containerName), 
             m_propertyName(propertyName),
+            m_variableType(),
             m_vectorProxyLoader(NULL),
             m_initialised(false)
           { 
diff --git a/PhysicsAnalysis/CommonTools/ExpressionEvaluation/ExpressionEvaluation/StackElement.h b/PhysicsAnalysis/CommonTools/ExpressionEvaluation/ExpressionEvaluation/StackElement.h
index cb33a13fd4fbec3cbc1c6d25625910b5b6e160f5..051b812195fa81734059570960dccd8f4b821555 100644
--- a/PhysicsAnalysis/CommonTools/ExpressionEvaluation/ExpressionEvaluation/StackElement.h
+++ b/PhysicsAnalysis/CommonTools/ExpressionEvaluation/ExpressionEvaluation/StackElement.h
@@ -36,7 +36,6 @@ namespace ExpressionParsing {
       StackElement(const std::vector<int> &val);
       StackElement(const std::vector<double> &val);
       StackElement(const std::string &val, IProxyLoader *proxyLoader);
-      StackElement(const StackElement &other);
 
       StackElement operator =(const int &rhs);
       StackElement operator =(const double &rhs);
diff --git a/PhysicsAnalysis/CommonTools/ExpressionEvaluation/ExpressionEvaluation/TriggerDecisionProxyLoader.h b/PhysicsAnalysis/CommonTools/ExpressionEvaluation/ExpressionEvaluation/TriggerDecisionProxyLoader.h
index c78b140465460e99088334b5f2f117a13afb294c..4e79872333e0d91735b703a1a12507f34a3d47ce 100644
--- a/PhysicsAnalysis/CommonTools/ExpressionEvaluation/ExpressionEvaluation/TriggerDecisionProxyLoader.h
+++ b/PhysicsAnalysis/CommonTools/ExpressionEvaluation/ExpressionEvaluation/TriggerDecisionProxyLoader.h
@@ -10,6 +10,9 @@
 // ExpressionParsing library
 /////////////////////////////////////////////////////////////////
 
+// ManaCore doesn't currently include the Trigger Service
+#ifndef XAOD_ANALYSIS
+
 #ifndef TRIGGERDECISIONPROXYLOADER_H
 #define TRIGGERDECISIONPROXYLOADER_H
 
@@ -37,3 +40,5 @@ namespace ExpressionParsing {
 }
 
 #endif // TRIGGERDECISIONPROXYLOADER_H
+
+#endif // XAOD_ANALYSIS
diff --git a/PhysicsAnalysis/CommonTools/ExpressionEvaluation/Root/EncapsulatingSingleton.h b/PhysicsAnalysis/CommonTools/ExpressionEvaluation/Root/EncapsulatingSingleton.h
index 27d5d8d99828811ac437744580f1dc9eec4133ee..411119331322abe573a72d1562a22695c4e4986b 100644
--- a/PhysicsAnalysis/CommonTools/ExpressionEvaluation/Root/EncapsulatingSingleton.h
+++ b/PhysicsAnalysis/CommonTools/ExpressionEvaluation/Root/EncapsulatingSingleton.h
@@ -54,6 +54,9 @@ namespace ExpressionParsing {
         }
       }
 
+      EncapsulatingSingleton (const EncapsulatingSingleton&) = delete;
+      EncapsulatingSingleton& operator= (const EncapsulatingSingleton&) = delete;
+
       T *m_pointer;
   };
 }
diff --git a/PhysicsAnalysis/CommonTools/ExpressionEvaluation/Root/ParsingInternals.h b/PhysicsAnalysis/CommonTools/ExpressionEvaluation/Root/ParsingInternals.h
index d768eece25cee8b2259b1753a58a0d261509bbe6..2179c1f1e77368de530529cdcdc22fd6fe6578c0 100644
--- a/PhysicsAnalysis/CommonTools/ExpressionEvaluation/Root/ParsingInternals.h
+++ b/PhysicsAnalysis/CommonTools/ExpressionEvaluation/Root/ParsingInternals.h
@@ -16,7 +16,9 @@
 //#define BOOST_SPIRIT_QI_DEBUG
 
 // on_error template signature changes when using this
+#ifndef BOOST_SPIRIT_USE_PHOENIX_V3
 #define BOOST_SPIRIT_USE_PHOENIX_V3
+#endif
 
 #include <boost/spirit/include/qi.hpp>
 #include <boost/variant/recursive_variant.hpp>
diff --git a/PhysicsAnalysis/CommonTools/ExpressionEvaluation/Root/StackElement.cxx b/PhysicsAnalysis/CommonTools/ExpressionEvaluation/Root/StackElement.cxx
index 7418d7f855d35d675cb8d12eb80d3d96ce5c5b50..34e5d0f209b48b60d396b45725ccfe49bac3da21 100644
--- a/PhysicsAnalysis/CommonTools/ExpressionEvaluation/Root/StackElement.cxx
+++ b/PhysicsAnalysis/CommonTools/ExpressionEvaluation/Root/StackElement.cxx
@@ -74,21 +74,52 @@
 
 namespace ExpressionParsing {
 
-  StackElement::StackElement() : type(SE_UNK), m_determinedVariableType(false) { }
-  StackElement::StackElement(unsigned int val) : type(SE_INT), intval(val), m_determinedVariableType(false) { }
-  StackElement::StackElement(int val) : type(SE_INT), intval(val), m_determinedVariableType(false) { }
-  StackElement::StackElement(double val) : type(SE_DOUBLE), doubleval(val), m_determinedVariableType(false) { }
-  StackElement::StackElement(const std::vector<int> &val) : type(SE_VECINT), vecintval(val), m_determinedVariableType(false) { }
-  StackElement::StackElement(const std::vector<double> &val) : type(SE_VECDOUBLE), vecdoubleval(val), m_determinedVariableType(false) { }
-  StackElement::StackElement(const std::string &val, IProxyLoader *proxyLoader): type(SE_UNK), varname(val), m_proxyLoader(proxyLoader), m_determinedVariableType(false) { }
-  StackElement::StackElement(const StackElement &other) 
-    : type(other.type), intval(other.intval), 
-    doubleval(other.doubleval), vecintval(other.vecintval),
-    vecdoubleval(other.vecdoubleval), varname(other.varname),
-    m_proxyLoader(other.m_proxyLoader), 
-    m_variableType(other.m_variableType),
-    m_determinedVariableType(other.m_determinedVariableType)
-  { }
+  StackElement::StackElement()
+    : type(SE_UNK),
+      intval(0),
+      doubleval(0),
+      m_proxyLoader(nullptr),
+      m_variableType(),
+      m_determinedVariableType(false) { }
+  StackElement::StackElement(unsigned int val)
+    : type(SE_INT),
+      intval(val), 
+      doubleval(0),
+      m_proxyLoader(nullptr),
+      m_determinedVariableType(false) { }
+  StackElement::StackElement(int val)
+    : type(SE_INT),
+      intval(val),
+      doubleval(0),
+      m_proxyLoader(nullptr),
+      m_determinedVariableType(false) { }
+  StackElement::StackElement(double val)
+    : type(SE_DOUBLE),
+      intval(0),
+      doubleval(val),
+      m_proxyLoader(nullptr),
+      m_determinedVariableType(false) { }
+  StackElement::StackElement(const std::vector<int> &val)
+    : type(SE_VECINT),
+      intval(0),
+      doubleval(0),
+      vecintval(val),
+      m_proxyLoader(0),
+      m_determinedVariableType(false) { }
+  StackElement::StackElement(const std::vector<double> &val)
+    : type(SE_VECDOUBLE),
+      intval(0),
+      doubleval(0),
+      vecdoubleval(val),
+      m_proxyLoader(0),
+      m_determinedVariableType(false) { }
+  StackElement::StackElement(const std::string &val, IProxyLoader *proxyLoader)
+    : type(SE_UNK),
+      intval(0),
+      doubleval(0),
+      varname(val),
+      m_proxyLoader(proxyLoader),
+      m_determinedVariableType(false) { }
 
   StackElement StackElement::operator =(const int &rhs)
   {
diff --git a/PhysicsAnalysis/CommonTools/ExpressionEvaluation/Root/xAODVariableProxyLoaders.cxx b/PhysicsAnalysis/CommonTools/ExpressionEvaluation/Root/xAODVariableProxyLoaders.cxx
index 01f07efa2f7081e8c3c3bfa26959b79f157e6f2a..66657a8230b4a35d4238eb76203607b4a91899b5 100644
--- a/PhysicsAnalysis/CommonTools/ExpressionEvaluation/Root/xAODVariableProxyLoaders.cxx
+++ b/PhysicsAnalysis/CommonTools/ExpressionEvaluation/Root/xAODVariableProxyLoaders.cxx
@@ -15,6 +15,7 @@
       return VT_PREFIX ## VT_TYPE; \
     } else if (accWrap) { \
       accessorNotAvailableForThisContainer = true; \
+      delete accWrap; \
     } \
   } \
 } while(0)
@@ -145,14 +146,14 @@ namespace ExpressionParsing {
 
   TMethodCollectionWrapper::TMethodCollectionWrapper(const std::type_info &containerTypeinfo, 
       const std::string &methodName)
-    : m_methodCall(NULL), m_valid(false)
+    : m_collectionProxy(nullptr),
+      m_methodCall(NULL), m_valid(false)
   {
     TClass *containerClass = TClass::GetClass(containerTypeinfo);
     if (!containerClass) {
       containerClass = TClass::GetClass(SG::normalizedTypeinfoName(containerTypeinfo).c_str());
       if (!containerClass) return;
     }
-    if (!containerClass) return;
 
     m_collectionProxy = containerClass->GetCollectionProxy();
     if (!m_collectionProxy) return;
diff --git a/PhysicsAnalysis/CommonTools/ExpressionEvaluation/cmt/requirements b/PhysicsAnalysis/CommonTools/ExpressionEvaluation/cmt/requirements
index 0a7a2973dd2896ccdb1ad0bbd97f038fc1b111ba..cff8a6fd1eb2119de402368f127e8b0af0f16cb5 100644
--- a/PhysicsAnalysis/CommonTools/ExpressionEvaluation/cmt/requirements
+++ b/PhysicsAnalysis/CommonTools/ExpressionEvaluation/cmt/requirements
@@ -7,7 +7,7 @@ use GaudiInterface 	  GaudiInterface-* 	  External
 use SGTools           SGTools-*           Control
 use AtlasROOT         AtlasROOT-*         External
 use StoreGate         StoreGate-*         Control
-use TrigDecisionTool  TrigDecisionTool-*  Trigger/TrigAnalysis
+use_unless pkg=TrigDecisionTool tag=ManaCore ver=* root=Trigger/TrigAnalysis
 use AthContainers     AthContainers-*     Control
 
 private
@@ -44,4 +44,4 @@ apply_pattern dual_use_library files= " *.cxx ../Root/*.cxx"
 #apply_pattern declare_joboptions files=" *.py"
 #apply_pattern declare_python_modules files="*.py"
 
-macro_append use_cppflags "-ftemplate-depth-512"
+#macro_append use_cppflags "-ftemplate-depth-512"
diff --git a/PhysicsAnalysis/CommonTools/ExpressionEvaluation/src/TriggerDecisionProxyLoader.cxx b/PhysicsAnalysis/CommonTools/ExpressionEvaluation/src/TriggerDecisionProxyLoader.cxx
index e2d4599978f01da5cc353a7ccbd519c52d6ef550..852fc7c8ed41e4f910d8ceefa03f81ab0574adf3 100644
--- a/PhysicsAnalysis/CommonTools/ExpressionEvaluation/src/TriggerDecisionProxyLoader.cxx
+++ b/PhysicsAnalysis/CommonTools/ExpressionEvaluation/src/TriggerDecisionProxyLoader.cxx
@@ -10,6 +10,9 @@
 // ExpressionParsing library
 /////////////////////////////////////////////////////////////////
 
+// ManaCore doesn't currently include the Trigger Service
+#ifndef XAOD_ANALYSIS
+
 #include "ExpressionEvaluation/TriggerDecisionProxyLoader.h"
 #include <string>
 
@@ -54,3 +57,5 @@ namespace ExpressionParsing {
     throw std::runtime_error("Trigger decision can't be vector<double>: check " + varname);
   }
 }
+
+#endif // XAOD_ANALYSIS