diff --git a/Control/AthenaMonitoring/AthenaMonitoring/AthMonitorAlgorithm.h b/Control/AthenaMonitoring/AthenaMonitoring/AthMonitorAlgorithm.h
index 11c0542fb48c3b2baab91feaa67d124ae632c42c..cdb1d6b12cdf1d91cade3dfd6cb3344cdaee0e5d 100644
--- a/Control/AthenaMonitoring/AthenaMonitoring/AthMonitorAlgorithm.h
+++ b/Control/AthenaMonitoring/AthenaMonitoring/AthMonitorAlgorithm.h
@@ -52,7 +52,7 @@ public:
      * 
      * @return StatusCode
      */
-    virtual StatusCode initialize();
+    virtual StatusCode initialize() override;
 
 
     /** 
@@ -61,7 +61,7 @@ public:
      * @param ctx event context for reentrant Athena call
      * @return StatusCode
      */
-    virtual StatusCode execute(const EventContext& ctx) const;
+    virtual StatusCode execute(const EventContext& ctx) const override;
 
 
     /** 
@@ -125,7 +125,7 @@ public:
      *
      * @return a value in the Environment_t enumeration which matches the input string.
      */
-    Environment_t envStringToEnum( const std::string& str );
+    Environment_t envStringToEnum( const std::string& str ) const;
 
 
     /** 
@@ -141,7 +141,7 @@ public:
      * 
      * @return a value in the DataType_t enumeration which matches the input string.
      */
-    DataType_t dataTypeStringToEnum( const std::string& str );
+    DataType_t dataTypeStringToEnum( const std::string& str ) const;
 
 
     /** 
@@ -261,27 +261,30 @@ public:
 
 
 protected:
-    ToolHandleArray<GenericMonitoringTool> m_tools; ///< Array of Generic Monitoring Tools
-    ToolHandle<Trig::ITrigDecisionTool> m_trigDecTool; ///< Tool to tell whether a specific trigger is passed
-    ToolHandle<ITriggerTranslatorTool> m_trigTranslator; ///< Tool to unpack trigger categories into a trigger list
-    ToolHandleArray<IDQFilterTool> m_DQFilterTools; ///< Array of Data Quality filter tools
-    ToolHandle<ILuminosityTool> m_lumiTool; ///< Tool for calculating various luminosity quantities
-    ToolHandle<ITrigLivefractionTool> m_liveTool; ///< Tool for calculating various live luminosity quantities
+    // Using the new way to declare JO properties: Gaudi::Property<int> m_myProperty {this,"MyProperty",0};
+
+    ToolHandleArray<GenericMonitoringTool> m_tools {this,"GMTools",{}}; ///< Array of Generic Monitoring Tools
+    ToolHandle<Trig::ITrigDecisionTool> m_trigDecTool {this,"TrigDecisionTool",""}; ///< Tool to tell whether a specific trigger is passed
+    ToolHandle<ITriggerTranslatorTool> m_trigTranslator {this,"TriggerTranslatorTool",""}; ///< Tool to unpack trigger categories into a trigger list
+    ToolHandleArray<IDQFilterTool> m_DQFilterTools {this,"FilterTools",{}}; ///< Array of Data Quality filter tools
+
+    ToolHandle<ILuminosityTool> m_lumiTool {this,"lumiTool","LuminosityTool"}; ///< Tool for calculating various luminosity quantities
+    ToolHandle<ITrigLivefractionTool> m_liveTool {this,"liveTool","TrigLivefractionTool"}; ///< Tool for calculating various live luminosity quantities
 
     AthMonitorAlgorithm::Environment_t m_environment; ///< Instance of the Environment_t enum
     AthMonitorAlgorithm::DataType_t m_dataType; ///< Instance of the DataType_t enum
-    std::string m_environmentStr; ///< Environment string pulled from the job option and converted to enum
-    std::string m_dataTypeStr; ///< DataType string pulled from the job option and converted to enum
+    Gaudi::Property<std::string> m_environmentStr {this,"Environment","user"}; ///< Environment string pulled from the job option and converted to enum
+    Gaudi::Property<std::string> m_dataTypeStr {this,"DataType","userDefined"}; ///< DataType string pulled from the job option and converted to enum
 
-    std::string m_triggerChainString; ///< Trigger chain string pulled from the job option and parsed into a vector
+    Gaudi::Property<std::string> m_triggerChainString {this,"TriggerChain",""}; ///< Trigger chain string pulled from the job option and parsed into a vector
     std::vector<std::string> m_vTrigChainNames; ///< Vector of trigger chain names parsed from trigger chain string
 
-    std::string m_fileKey;
+    Gaudi::Property<std::string> m_fileKey {this,"FileKey",""}; ///< Internal Athena name for file
     bool m_hasRetrievedLumiTool; ///< Allows use of various luminosity functions
-    bool m_useLumi; ///< Allows use of various luminosity functions
-    float m_defaultLBDuration; ///< Default duration of one lumi block
-    int m_detailLevel; ///< Sets the level of detail used in the monitoring
-    SG::ReadHandleKey<xAOD::EventInfo> m_EventInfoKey; // key for retrieving EventInfo from StoreGate
+    Gaudi::Property<bool> m_useLumi {this,"EnableLumi",false}; ///< Allows use of various luminosity functions
+    Gaudi::Property<float> m_defaultLBDuration {this,"DefaultLBDuration",60.}; ///< Default duration of one lumi block
+    Gaudi::Property<int> m_detailLevel {this,"DetailLevel",0}; ///< Sets the level of detail used in the monitoring
+    SG::ReadHandleKey<xAOD::EventInfo> m_EventInfoKey {this,"EventInfoKey","EventInfo"}; ///< Key for retrieving EventInfo from StoreGate
 };
 
 #endif
diff --git a/Control/AthenaMonitoring/AthenaMonitoring/ExampleMonitorAlgorithm.h b/Control/AthenaMonitoring/AthenaMonitoring/ExampleMonitorAlgorithm.h
index 0c6f7766270908d8175dacbafb1f161b0c79197a..0d959860d56a6e545aaa5d6e6d6ef0a3f96dc569 100644
--- a/Control/AthenaMonitoring/AthenaMonitoring/ExampleMonitorAlgorithm.h
+++ b/Control/AthenaMonitoring/AthenaMonitoring/ExampleMonitorAlgorithm.h
@@ -20,6 +20,6 @@ public:
     StatusCode initialize();
     virtual StatusCode fillHistograms( const EventContext& ctx ) const override;
 private:
-	bool m_doRandom;
+	Gaudi::Property<bool> m_doRandom {this,"RandomHist",false};
 };
 #endif
\ No newline at end of file
diff --git a/Control/AthenaMonitoring/python/AthMonitorCfgHelper.py b/Control/AthenaMonitoring/python/AthMonitorCfgHelper.py
index 16a4ea893376a22f6d3e9c930dfb8a5acf80a11b..9c8cccce5ca638d4a14e7dc76d76fb0eced3ff5a 100644
--- a/Control/AthenaMonitoring/python/AthMonitorCfgHelper.py
+++ b/Control/AthenaMonitoring/python/AthMonitorCfgHelper.py
@@ -11,7 +11,7 @@ class AthMonitorCfgHelper(object):
         self.monSeq = AthSequencer('AthMonSeq_' + monName)
         self.resobj = ComponentAccumulator()
 
-    def AddAlgorithm(self,algClassOrObj, *args, **kwargs):
+    def addAlgorithm(self,algClassOrObj, *args, **kwargs):
         from AthenaCommon.Configurable import Configurable
         if issubclass(algClassOrObj, Configurable):
             algObj = algClassOrObj(*args, **kwargs)
@@ -25,7 +25,7 @@ class AthMonitorCfgHelper(object):
         self.monSeq += algObj
         return algObj
 
-    def AddGroup(self, alg, name, topPath=''):
+    def addGroup(self, alg, name, topPath=''):
         from AthenaMonitoring.GenericMonitoringTool import GenericMonitoringTool
         tool = GenericMonitoringTool(name)
         acc, histsvc = GetDQTHistSvc(self.inputFlags)
diff --git a/Control/AthenaMonitoring/share/ExampleMonitorAlgorithm.py b/Control/AthenaMonitoring/python/ExampleMonitorAlgorithm.py
similarity index 82%
rename from Control/AthenaMonitoring/share/ExampleMonitorAlgorithm.py
rename to Control/AthenaMonitoring/python/ExampleMonitorAlgorithm.py
index bc4d4913161789e7127e499739d9dfd8dc18d991..88b8fffe90eee5e67e7bb2a77b22bb746bfde4cd 100644
--- a/Control/AthenaMonitoring/share/ExampleMonitorAlgorithm.py
+++ b/Control/AthenaMonitoring/python/ExampleMonitorAlgorithm.py
@@ -21,7 +21,7 @@ def ExampleMonitoringConfig(inputFlags):
     # The following class will make a sequence, configure algorithms, and link
     # them to GenericMonitoringTools
     from AthenaMonitoring import AthMonitorCfgHelper
-    helper = AthMonitorCfgHelper(inputFlags,"ExampleMonitor")
+    helper = AthMonitorCfgHelper(inputFlags,'ExampleAthMonitorCfg')
 
 
     ### STEP 2 ###
@@ -31,11 +31,11 @@ def ExampleMonitoringConfig(inputFlags):
     # base class configuration following the inputFlags. The returned object 
     # is the algorithm.
     from AthenaMonitoring.AthenaMonitoringConf import ExampleMonitorAlgorithm
-    exampleMonAlg = helper.AddAlgorithm(ExampleMonitorAlgorithm)
+    exampleMonAlg = helper.addAlgorithm(ExampleMonitorAlgorithm,'ExampleMonAlg')
 
     # You can actually make multiple instances of the same algorithm and give 
     # them different configurations
-    anotherExampleMonAlg = helper.AddAlgorithm(ExampleMonitorAlgorithm)
+    anotherExampleMonAlg = helper.addAlgorithm(ExampleMonitorAlgorithm,'AnotherExampleMonAlg')
 
     # # If for some really obscure reason you need to instantiate an algorithm
     # # yourself, the AddAlgorithm method will still configure the base 
@@ -44,14 +44,8 @@ def ExampleMonitoringConfig(inputFlags):
 
 
     ### STEP 3 ###
-    # Edit properties of a algorithm, using inputFlags.
-    exampleMonAlg.FileKey = inputFlags.DQ.FileKey
-    exampleMonAlg.Environment = inputFlags.DQ.Environment
-    exampleMonAlg.DataType = inputFlags.DQ.DataType
-    
+    # Edit properties of a algorithm
     exampleMonAlg.TriggerChain = ''
-    exampleMonAlg.EnableLumi = True
-
 
     ### STEP 4 ###
     # Add some tools. N.B. Do not use your own trigger decion tool. Use the
@@ -72,21 +66,29 @@ def ExampleMonitoringConfig(inputFlags):
 
     # Add a generic monitoring tool (a "group" in old language). The returned 
     # object here is the standard GenericMonitoringTool.
-    myGroup = helper.AddGroup(
+    myGroup = helper.addGroup(
         exampleMonAlg,
-        "ExampleMonitor",
-        "OneRing/"
+        'ExampleMonitor',
+        'OneRing/'
     )
 
+    # Add a GMT for the other example monitor algorithm
+    anotherGroup = helper.addGroup(anotherExampleMonAlg,'ExampleMonitor')
+
     ### STEP 5 ###
     # Configure histograms
-    myGroup.defineHistogram("lumiPerBCID;lumiPerBCID", title="Luminosity;L/BCID;Events",
+    myGroup.defineHistogram('lumiPerBCID;lumiPerBCID', title='Luminosity;L/BCID;Events',
                             path='ToRuleThemAll',xbins=10,xmin=0.0,xmax=10.0)
-    myGroup.defineHistogram("lb;lb", title="Luminosity Block;lb;Events",
+    myGroup.defineHistogram('lb;lb', title='Luminosity Block;lb;Events',
                             path='ToFindThem',xbins=1000,xmin=-0.5,xmax=999.5)
-    myGroup.defineHistogram("random;random", title="LB;x;Events",
+    myGroup.defineHistogram('random;random', title='LB;x;Events',
                             path='ToBringThemAll',xbins=30,xmin=0,xmax=1)
 
+
+    anotherGroup.defineHistogram('lbWithFilter;lbWithFilter',title='Lumi;lb;Events',
+                                 path='top',xbins=1000,xmin=-0.5,xmax=999.5)
+
+
     ### STEP 6 ###
     # Finalize. The return value should be a tuple of the ComponentAccumulator
     # and the sequence containing the created algorithms. If we haven't called
@@ -116,7 +118,7 @@ if __name__=='__main__':
     file = 'data16_13TeV.00311321.physics_Main.recon.AOD.r9264/AOD.11038520._000001.pool.root.1'
     ConfigFlags.Input.Files = [nightly+file]
     ConfigFlags.Input.isMC = False
-    ConfigFlags.Output.HISTFileName = 'ExampleMonitor.root'
+    ConfigFlags.Output.HISTFileName = 'ExampleMonitorOutput.root'
     ConfigFlags.lock()
 
     # Initialize configuration object, add accumulator, merge, and run.
diff --git a/Control/AthenaMonitoring/python/__init__.py b/Control/AthenaMonitoring/python/__init__.py
index a97b740139521948a2591aee8e432459c3d78592..d95762383ed567ddafbfd84bc584fd449465b50b 100644
--- a/Control/AthenaMonitoring/python/__init__.py
+++ b/Control/AthenaMonitoring/python/__init__.py
@@ -3,5 +3,4 @@
 #
 
 from AthMonitorCfgHelper import AthMonitorCfgHelper
-from AtlasReadyFilterTool import GetAtlasReadyFilterTool
-import DQConfigFlags
+from AtlasReadyFilterTool import GetAtlasReadyFilterTool
\ No newline at end of file
diff --git a/Control/AthenaMonitoring/src/AthMonitorAlgorithm.cxx b/Control/AthenaMonitoring/src/AthMonitorAlgorithm.cxx
index a6b28b2f131213d3ce51e07b78f475879a3b96ef..044cf89f2205a291c73a0e34b5f767e942915f62 100644
--- a/Control/AthenaMonitoring/src/AthMonitorAlgorithm.cxx
+++ b/Control/AthenaMonitoring/src/AthMonitorAlgorithm.cxx
@@ -6,41 +6,11 @@
 
 AthMonitorAlgorithm::AthMonitorAlgorithm( const std::string& name, ISvcLocator* pSvcLocator )
 :AthReentrantAlgorithm(name,pSvcLocator)
-,m_tools(this)
-,m_trigDecTool("")
-,m_trigTranslator("")
-,m_DQFilterTools(this)
-,m_lumiTool("LuminosityTool")
-,m_liveTool("TrigLivefractionTool")
 ,m_environment(Environment_t::user)
 ,m_dataType(DataType_t::userDefined)
-,m_environmentStr("user")
-,m_dataTypeStr("userDefined")
-,m_triggerChainString("")
 ,m_vTrigChainNames({})
-,m_fileKey("")
 ,m_hasRetrievedLumiTool(false)
-,m_useLumi(false)
-,m_defaultLBDuration(60.)
-,m_detailLevel(1)
-,m_EventInfoKey("EventInfo")
-{
-    // The following properties are set in the python configuration and
-    // picked up here to be converted into the method variables. For an
-    // explanation of each variable, see the header.
-    declareProperty("GMTools",m_tools);
-    declareProperty("TrigDecisionTool",m_trigDecTool);
-    declareProperty("TriggerTranslatorTool",m_trigTranslator);
-    declareProperty("FilterTools",m_DQFilterTools);
-    declareProperty("Environment",m_environmentStr);
-    declareProperty("DataType",m_dataTypeStr);
-    declareProperty("TriggerChain",m_triggerChainString);
-    declareProperty("FileKey",m_fileKey);
-    declareProperty("EnableLumi",m_useLumi); 
-    declareProperty("DefaultLBDuration",m_defaultLBDuration);
-    declareProperty("DetailLevel",m_detailLevel);
-    declareProperty("EventInfoKey",m_EventInfoKey);
-}
+{}
 
 
 AthMonitorAlgorithm::~AthMonitorAlgorithm() {}
@@ -51,19 +21,12 @@ StatusCode AthMonitorAlgorithm::initialize() {
 
     // Retrieve the generic monitoring tools (a ToolHandleArray)
     if ( !m_tools.empty() ) {
-        sc = m_tools.retrieve();
-        if ( !sc.isSuccess() ) {
-            ATH_MSG_ERROR("Unable to retrieve the generic monitoring tools." << endmsg);
-        }
+        ATH_CHECK( m_tools.retrieve() );
     }
 
     // Retrieve the trigger decision tool if requested
     if ( !m_trigDecTool.empty() ) {
-        sc = m_trigDecTool.retrieve();
-        if( !sc.isSuccess() ) {
-            ATH_MSG_ERROR("Unable to retrieve the TrigDecisionTool." << endmsg);
-            return sc;
-        }
+        ATH_CHECK( m_trigDecTool.retrieve() );
 
         // If the trigger chain is specified, parse it into a list.
         if ( m_triggerChainString!="" ) {
@@ -76,11 +39,7 @@ StatusCode AthMonitorAlgorithm::initialize() {
             // Then, retrieve the trigger translator if requested. Finally, convert 
             // into a usable format using the unpackTriggerCategories function.
             if (!m_trigTranslator.empty()) {
-                sc = m_trigTranslator.retrieve();
-                if ( !sc.isSuccess() ) {
-                    ATH_MSG_ERROR("Unable to retrieve the TrigTranslatorTool." << endmsg);
-                    return sc;
-                }
+                ATH_CHECK( m_trigTranslator.retrieve() );
                 unpackTriggerCategories(m_vTrigChainNames);
             }
         }
@@ -144,7 +103,7 @@ AthMonitorAlgorithm::Environment_t AthMonitorAlgorithm::environment() const {
 }
 
 
-AthMonitorAlgorithm::Environment_t AthMonitorAlgorithm::envStringToEnum( const std::string& str ) {
+AthMonitorAlgorithm::Environment_t AthMonitorAlgorithm::envStringToEnum( const std::string& str ) const {
     // convert the string to all lowercase
     std::string lowerCaseStr = str;
     std::transform(lowerCaseStr.begin(), lowerCaseStr.end(), lowerCaseStr.begin(), ::tolower);
@@ -177,7 +136,7 @@ AthMonitorAlgorithm::DataType_t AthMonitorAlgorithm::dataType() const {
 }
 
 
-AthMonitorAlgorithm::DataType_t AthMonitorAlgorithm::dataTypeStringToEnum( const std::string& str ) {
+AthMonitorAlgorithm::DataType_t AthMonitorAlgorithm::dataTypeStringToEnum( const std::string& str ) const {
     // convert the string to all lowercase
     std::string lowerCaseStr = str;
     std::transform(lowerCaseStr.begin(), lowerCaseStr.end(), lowerCaseStr.begin(), ::tolower);
diff --git a/Control/AthenaMonitoring/src/ExampleMonitorAlgorithm.cxx b/Control/AthenaMonitoring/src/ExampleMonitorAlgorithm.cxx
index 58b7784ee03ef0fd09f510c2de91a8c16ecb0d5c..bc0167f758a528f984624b0d120a71f846d17b97 100644
--- a/Control/AthenaMonitoring/src/ExampleMonitorAlgorithm.cxx
+++ b/Control/AthenaMonitoring/src/ExampleMonitorAlgorithm.cxx
@@ -7,9 +7,7 @@
 ExampleMonitorAlgorithm::ExampleMonitorAlgorithm( const std::string& name, ISvcLocator* pSvcLocator )
 :AthMonitorAlgorithm(name,pSvcLocator)
 ,m_doRandom(false)
-{
-    declareProperty("RandomHist",m_doRandom);
-}
+{}
 
 
 ExampleMonitorAlgorithm::~ExampleMonitorAlgorithm() {}