diff --git a/GaudiExamples/options/AlgToolsClone.py b/GaudiExamples/options/AlgToolsClone.py
index 0549ad0b2b94c72204de1cbc697b91f84f2da9f1..326b9ddf24eee21de6291d3851e46a0a2255e1a1 100644
--- a/GaudiExamples/options/AlgToolsClone.py
+++ b/GaudiExamples/options/AlgToolsClone.py
@@ -9,8 +9,7 @@ GaudiExamplesCommonConf()
 
 myalg = MyAlgorithm('MyAlg',
                     PrivateToolsOnly = True,
-                    Cardinality = 20,
-                    IsClonable = True)
+                    Cardinality = 20)
 
 ToolSvc(OutputLevel = INFO )
 
diff --git a/GaudiExamples/options/AsyncIncidents.py b/GaudiExamples/options/AsyncIncidents.py
index 3e1896c036c2e3a1d6a2b539e27ff1f8e3f96a04..b0c4b76019f2b5214f01a95e4820fd9d4363aaf6 100644
--- a/GaudiExamples/options/AsyncIncidents.py
+++ b/GaudiExamples/options/AsyncIncidents.py
@@ -53,14 +53,12 @@ AITestSvc2=IncidentAsyncTestSvc("IncidentAwareService2",
                                 Priority=1)
 AITestAlg1=IncidentAsyncTestAlg("IncidentAwareTestAlg1",
                                 ServiceName="IncidentAwareService1",
-                                IsClonable=True,
                                 Cardinality=5,
                                 inpKeys=['/Event/DAQ/ODIN']
                             )
 
 AITestAlg2=IncidentAsyncTestAlg("IncidentAwareTestAlg2",
                                 ServiceName="IncidentAwareService2",
-                                IsClonable=False,
                                 Cardinality=1,
                                 inpKeys=['/Event/Hlt/DecReports']
                             )
diff --git a/GaudiExamples/options/ROOT_IO/WriteAndReadHandleWhiteBoard.py b/GaudiExamples/options/ROOT_IO/WriteAndReadHandleWhiteBoard.py
index 5c5ec7da9b30869359c94672c7b0f563e73b031f..b736302210f60533a9ff410aa5caa4fd3e6e9c52 100644
--- a/GaudiExamples/options/ROOT_IO/WriteAndReadHandleWhiteBoard.py
+++ b/GaudiExamples/options/ROOT_IO/WriteAndReadHandleWhiteBoard.py
@@ -41,13 +41,11 @@ product_name="MyCollision"
 
 writer = WriteHandleAlg("Writer",
                         OutputLevel=DEBUG,
-                        UseHandle=True,
-                        IsClonable=True)
+                        UseHandle=True)
 writer.Output.Path = "/Event/"+product_name
 
 reader = ReadHandleAlg("Reader",
-                       OutputLevel=DEBUG,
-                       IsClonable=True)
+                       OutputLevel=DEBUG)
 reader.Input.Path = product_name
 
 
diff --git a/GaudiExamples/src/AlgTools/MyAlgorithm.h b/GaudiExamples/src/AlgTools/MyAlgorithm.h
index 4caf912b48fc5db4ae54a213cdf19fa24d7992dc..d55f60413675eb2f6a7dd79728280634957d40b4 100644
--- a/GaudiExamples/src/AlgTools/MyAlgorithm.h
+++ b/GaudiExamples/src/AlgTools/MyAlgorithm.h
@@ -25,6 +25,8 @@ public:
   StatusCode execute() override;
   StatusCode finalize() override;
 
+  bool isClonable() const override { return true; }
+
 private:
   Gaudi::Property<std::string> m_privateToolType{this, "ToolWithName", "MyTool",
                                                  "Type of the tool to use (internal name is ToolWithName)"};
diff --git a/GaudiExamples/src/AlgTools/MyGaudiAlgorithm.h b/GaudiExamples/src/AlgTools/MyGaudiAlgorithm.h
index 84eb86083a6b8abcd52e3b6dd15e0436234eb911..8782616ecb40d3ff7d3ecd90ff5f26e8847c96a9 100644
--- a/GaudiExamples/src/AlgTools/MyGaudiAlgorithm.h
+++ b/GaudiExamples/src/AlgTools/MyGaudiAlgorithm.h
@@ -26,6 +26,8 @@ public:
   StatusCode execute() override;
   StatusCode finalize() override;
 
+  bool isClonable() const override { return true; }
+
 private:
   Gaudi::Property<std::string> m_privateToolType{this, "ToolWithName", "MyTool",
                                                  "Type of the tool to use (internal name is ToolWithName)"};
diff --git a/GaudiExamples/src/IO/ReadHandleAlg.h b/GaudiExamples/src/IO/ReadHandleAlg.h
index 2c45d44aea46157762c21fc8e3ba9e74fc1157aa..84e22642fe8437c71ecdd86de579eb2572329e1d 100644
--- a/GaudiExamples/src/IO/ReadHandleAlg.h
+++ b/GaudiExamples/src/IO/ReadHandleAlg.h
@@ -26,6 +26,8 @@ public:
   /// Constructor: A constructor of this form must be provided.
   ReadHandleAlg(const std::string& nam, ISvcLocator* pSvc);
 
+  bool isClonable() const override { return true; }
+
   /// Standard Destructor
   ~ReadHandleAlg() override = default;
 
diff --git a/GaudiExamples/src/IO/WriteHandleAlg.h b/GaudiExamples/src/IO/WriteHandleAlg.h
index bd919169a2e6c19f22a9413dbea77be535c88e50..96aec44025e5afc68db9de7aea70e0ec6c13d435 100644
--- a/GaudiExamples/src/IO/WriteHandleAlg.h
+++ b/GaudiExamples/src/IO/WriteHandleAlg.h
@@ -20,6 +20,7 @@ class WriteHandleAlg : public GaudiAlgorithm {
     friend class AlgFactory<WriteHandleAlg> ;
 
   public:
+    bool isClonable() const override { return true; }
 
     /// the execution of the algorithm
     StatusCode execute  () override ; // the execution of the algorithm
diff --git a/GaudiExamples/src/IncidentSvc/IncidentAsyncTestAlg.h b/GaudiExamples/src/IncidentSvc/IncidentAsyncTestAlg.h
index ee76618b2263587418e8c0b9d075395f9ad96266..6ee0a69493a9179ca95a5a57f7928ba06456acd8 100644
--- a/GaudiExamples/src/IncidentSvc/IncidentAsyncTestAlg.h
+++ b/GaudiExamples/src/IncidentSvc/IncidentAsyncTestAlg.h
@@ -18,6 +18,8 @@ public:
   StatusCode execute() override;
   StatusCode finalize() override;
 
+  bool isClonable() const override { return true; }
+
   static std::string& incident();
 
 private:
diff --git a/GaudiExamples/tests/qmtest/refs/Aida2Root.ref b/GaudiExamples/tests/qmtest/refs/Aida2Root.ref
index f472f86352ef01ec8369ad63c43f778af6f3c718..b6f0df6282eb3960bb5426feece7e01dc8377ac2 100644
--- a/GaudiExamples/tests/qmtest/refs/Aida2Root.ref
+++ b/GaudiExamples/tests/qmtest/refs/Aida2Root.ref
@@ -31,7 +31,7 @@ ApplicationMgr       INFO Application Manager Configured successfully
 SimpleHistos        DEBUG Property update for OutputLevel : new value = 2
 SimpleHistos        DEBUG Initialize base class GaudiCommon<Algorithm>
 SimpleHistos        DEBUG could not locate CounterSummarySvc, no counter summary will be made
-SimpleHistos        DEBUG List of ALL properties of GaudiHistoAlgorithm/SimpleHistos  #properties = 51
+SimpleHistos        DEBUG List of ALL properties of GaudiHistoAlgorithm/SimpleHistos  #properties = 50
 SimpleHistos        DEBUG Property ['Name': Value] =  'AutoStringIDPurgeMap':{ '/' : '=SLASH=' }
 SimpleHistos        DEBUG Property ['Name': Value] =  'UseSequencialNumericAutoIDs':False
 SimpleHistos        DEBUG Property ['Name': Value] =  'HeaderFor1DHistoTable':|   Title                                       |    #    |     Mean   |    RMS     |  Skewness  |  Kurtosis  |
@@ -64,7 +64,6 @@ SimpleHistos        DEBUG Property ['Name': Value] =  'ErrorsPrint':True
 SimpleHistos        DEBUG Property ['Name': Value] =  'IsIOBound':False
 SimpleHistos        DEBUG Property ['Name': Value] =  'NeededResources':[  ]
 SimpleHistos        DEBUG Property ['Name': Value] =  'Cardinality':1
-SimpleHistos        DEBUG Property ['Name': Value] =  'IsClonable':False
 SimpleHistos        DEBUG Property ['Name': Value] =  'RegisterForContextService':True
 SimpleHistos        DEBUG Property ['Name': Value] =  'MonitorService':MonitorSvc
 SimpleHistos        DEBUG Property ['Name': Value] =  'Timeline':False
@@ -94,7 +93,7 @@ SimpleHistos        DEBUG GaudiHistoAlgorithm:: The histogram path is set to be
 SimpleHistos        DEBUG input handles: 0
 SimpleHistos        DEBUG output handles: 0
 SimpleHistos        DEBUG Data Deps for SimpleHistos
-Histos2           SUCCESS List of ALL properties of Gaudi::Examples::HistoProps/Histos2  #properties = 53
+Histos2           SUCCESS List of ALL properties of Gaudi::Examples::HistoProps/Histos2  #properties = 52
 Histos2           SUCCESS Property ['Name': Value] =  'Histo2':('',-5.00000,5.00000,200)
 Histos2           SUCCESS Property ['Name': Value] =  'Histo1':('Histogram1',-3.00000,3.00000,200)
 Histos2           SUCCESS Property ['Name': Value] =  'AutoStringIDPurgeMap':{ '/' : '=SLASH=' }
@@ -129,7 +128,6 @@ Histos2           SUCCESS Property ['Name': Value] =  'ErrorsPrint':True
 Histos2           SUCCESS Property ['Name': Value] =  'IsIOBound':False
 Histos2           SUCCESS Property ['Name': Value] =  'NeededResources':[  ]
 Histos2           SUCCESS Property ['Name': Value] =  'Cardinality':1
-Histos2           SUCCESS Property ['Name': Value] =  'IsClonable':False
 Histos2           SUCCESS Property ['Name': Value] =  'RegisterForContextService':True
 Histos2           SUCCESS Property ['Name': Value] =  'MonitorService':MonitorSvc
 Histos2           SUCCESS Property ['Name': Value] =  'Timeline':False
@@ -148,7 +146,7 @@ Histos2           SUCCESS Property ['Name': Value] =  'Enable':True
 Histos2           SUCCESS Property ['Name': Value] =  'OutputLevel':3
 Histos2           SUCCESS Property ['Name': Value] =  'ExtraOutputs':[]
 Histos2           SUCCESS Property ['Name': Value] =  'ExtraInputs':[]
-Aida2Root         SUCCESS List of ALL properties of Aida2Root/Aida2Root  #properties = 56
+Aida2Root         SUCCESS List of ALL properties of Aida2Root/Aida2Root  #properties = 55
 Aida2Root         SUCCESS Property ['Name': Value] =  'Profs2D':[ 'SimpleHistos/321' , 'SimpleHistos/2dprof' ]
 Aida2Root         SUCCESS Property ['Name': Value] =  'Profs1D':[ 'SimpleHistos/Expo V Gauss 1DProf' ]
 Aida2Root         SUCCESS Property ['Name': Value] =  'Histos3D':[ 'SimpleHistos/3D plot AutoID' , 'SimpleHistos/3d' ]
@@ -186,7 +184,6 @@ Aida2Root         SUCCESS Property ['Name': Value] =  'ErrorsPrint':True
 Aida2Root         SUCCESS Property ['Name': Value] =  'IsIOBound':False
 Aida2Root         SUCCESS Property ['Name': Value] =  'NeededResources':[  ]
 Aida2Root         SUCCESS Property ['Name': Value] =  'Cardinality':1
-Aida2Root         SUCCESS Property ['Name': Value] =  'IsClonable':False
 Aida2Root         SUCCESS Property ['Name': Value] =  'RegisterForContextService':True
 Aida2Root         SUCCESS Property ['Name': Value] =  'MonitorService':MonitorSvc
 Aida2Root         SUCCESS Property ['Name': Value] =  'Timeline':False
diff --git a/GaudiExamples/tests/qmtest/refs/AlgTools2.ref b/GaudiExamples/tests/qmtest/refs/AlgTools2.ref
index bed4f0e3d567434dfc01059c5c363661857c1457..049a920fa7e8a1a41aea4d3e89c052ded2df07f0 100644
--- a/GaudiExamples/tests/qmtest/refs/AlgTools2.ref
+++ b/GaudiExamples/tests/qmtest/refs/AlgTools2.ref
@@ -34,7 +34,7 @@ StatusCodeSvc        INFO initialize
 MyAlg               DEBUG Property update for OutputLevel : new value = 2
 MyAlg               DEBUG Initialize base class GaudiCommon<Algorithm>
 MyAlg               DEBUG could not locate CounterSummarySvc, no counter summary will be made
-MyAlg               DEBUG List of ALL properties of MyGaudiAlgorithm/MyAlg  #properties = 45
+MyAlg               DEBUG List of ALL properties of MyGaudiAlgorithm/MyAlg  #properties = 44
 MyAlg               DEBUG Property ['Name': Value] =  'trackSelection':/Event/MyAnalysis/Tracks
 MyAlg               DEBUG Property ['Name': Value] =  'raw':/Rec/RAW
 MyAlg               DEBUG Property ['Name': Value] =  'hits':/Event/Rec/Hits
@@ -61,7 +61,6 @@ MyAlg               DEBUG Property ['Name': Value] =  'ErrorsPrint':True
 MyAlg               DEBUG Property ['Name': Value] =  'IsIOBound':False
 MyAlg               DEBUG Property ['Name': Value] =  'NeededResources':[  ]
 MyAlg               DEBUG Property ['Name': Value] =  'Cardinality':1
-MyAlg               DEBUG Property ['Name': Value] =  'IsClonable':False
 MyAlg               DEBUG Property ['Name': Value] =  'RegisterForContextService':True
 MyAlg               DEBUG Property ['Name': Value] =  'MonitorService':MonitorSvc
 MyAlg               DEBUG Property ['Name': Value] =  'Timeline':False
diff --git a/GaudiExamples/tests/qmtest/refs/ControlFlow/SuperAlgDynamicGraph.ref b/GaudiExamples/tests/qmtest/refs/ControlFlow/SuperAlgDynamicGraph.ref
index b959f516430b47ae9b0348a54806f52eb12b4ffb..c35831f257af0ef5f43c4b60f5fb7fe20b5adc9a 100644
--- a/GaudiExamples/tests/qmtest/refs/ControlFlow/SuperAlgDynamicGraph.ref
+++ b/GaudiExamples/tests/qmtest/refs/ControlFlow/SuperAlgDynamicGraph.ref
@@ -31,7 +31,7 @@ seq_2                INFO Member list: Prescaler/s2_Prescaler, EventCounter/s2_C
 s2_Prescaler        DEBUG Property update for OutputLevel : new value = 2
 s2_Prescaler        DEBUG Initialize base class GaudiCommon<Algorithm>
 s2_Prescaler        DEBUG could not locate CounterSummarySvc, no counter summary will be made
-s2_Prescaler        DEBUG List of ALL properties of Prescaler/s2_Prescaler  #properties = 37
+s2_Prescaler        DEBUG List of ALL properties of Prescaler/s2_Prescaler  #properties = 36
 s2_Prescaler        DEBUG Property ['Name': Value] =  'PercentPass':75.000000
 s2_Prescaler        DEBUG Property ['Name': Value] =  'RequireObjects':[  ]
 s2_Prescaler        DEBUG Property ['Name': Value] =  'VetoObjects':[  ]
@@ -49,7 +49,6 @@ s2_Prescaler        DEBUG Property ['Name': Value] =  'PropertiesPrint':False
 s2_Prescaler        DEBUG Property ['Name': Value] =  'ErrorsPrint':True
 s2_Prescaler        DEBUG Property ['Name': Value] =  'NeededResources':[  ]
 s2_Prescaler        DEBUG Property ['Name': Value] =  'Cardinality':1
-s2_Prescaler        DEBUG Property ['Name': Value] =  'IsClonable':False
 s2_Prescaler        DEBUG Property ['Name': Value] =  'RegisterForContextService':True
 s2_Prescaler        DEBUG Property ['Name': Value] =  'MonitorService':MonitorSvc
 s2_Prescaler        DEBUG Property ['Name': Value] =  'Timeline':False
diff --git a/GaudiExamples/tests/qmtest/refs/ControlFlow/SuperAlgorithm.ref b/GaudiExamples/tests/qmtest/refs/ControlFlow/SuperAlgorithm.ref
index fbd883aa7b8afa4c55e9c2f0ad3f041123eed650..901cc069e72f4aa2cf5ff8ca29cc30594d72148a 100644
--- a/GaudiExamples/tests/qmtest/refs/ControlFlow/SuperAlgorithm.ref
+++ b/GaudiExamples/tests/qmtest/refs/ControlFlow/SuperAlgorithm.ref
@@ -40,7 +40,7 @@ seq_3                INFO Member list: Prescaler/s2_Prescaler, HelloWorld/s2_HW
 s2_Prescaler        DEBUG Property update for OutputLevel : new value = 2
 s2_Prescaler        DEBUG Initialize base class GaudiCommon<Algorithm>
 s2_Prescaler        DEBUG could not locate CounterSummarySvc, no counter summary will be made
-s2_Prescaler        DEBUG List of ALL properties of Prescaler/s2_Prescaler  #properties = 37
+s2_Prescaler        DEBUG List of ALL properties of Prescaler/s2_Prescaler  #properties = 36
 s2_Prescaler        DEBUG Property ['Name': Value] =  'PercentPass':75.000000
 s2_Prescaler        DEBUG Property ['Name': Value] =  'RequireObjects':[  ]
 s2_Prescaler        DEBUG Property ['Name': Value] =  'VetoObjects':[  ]
@@ -58,7 +58,6 @@ s2_Prescaler        DEBUG Property ['Name': Value] =  'PropertiesPrint':False
 s2_Prescaler        DEBUG Property ['Name': Value] =  'ErrorsPrint':True
 s2_Prescaler        DEBUG Property ['Name': Value] =  'NeededResources':[  ]
 s2_Prescaler        DEBUG Property ['Name': Value] =  'Cardinality':1
-s2_Prescaler        DEBUG Property ['Name': Value] =  'IsClonable':False
 s2_Prescaler        DEBUG Property ['Name': Value] =  'RegisterForContextService':True
 s2_Prescaler        DEBUG Property ['Name': Value] =  'MonitorService':MonitorSvc
 s2_Prescaler        DEBUG Property ['Name': Value] =  'Timeline':False
diff --git a/GaudiExamples/tests/qmtest/refs/EvtColsEx/Write.ref b/GaudiExamples/tests/qmtest/refs/EvtColsEx/Write.ref
index 83ef373b35e703e78e0278cad30d34ba5fdb60c8..029dbd1b95e765750b334b93a756863e8858bb7a 100644
--- a/GaudiExamples/tests/qmtest/refs/EvtColsEx/Write.ref
+++ b/GaudiExamples/tests/qmtest/refs/EvtColsEx/Write.ref
@@ -30,7 +30,7 @@ RndmGenSvc.Engine    INFO Generator engine type:CLHEP::RanluxEngine
 RndmGenSvc.Engine    INFO Current Seed:1234567 Luxury:3
 RndmGenSvc           INFO Using Random engine:HepRndm::Engine<CLHEP::RanluxEngine>
 EvtTupleSvc          INFO Added stream file:PFN:EvtColsEx.tags as EVTCOLS
-Fill              SUCCESS List of ALL properties of Gaudi::Examples::EvtColAlg/Fill  #properties = 65
+Fill              SUCCESS List of ALL properties of Gaudi::Examples::EvtColAlg/Fill  #properties = 64
 Fill              SUCCESS Property ['Name': Value] =  'EvtColDir':Fill
 Fill              SUCCESS Property ['Name': Value] =  'EvtColTopDir':
 Fill              SUCCESS Property ['Name': Value] =  'EvtColLUN':EVTCOLS
@@ -77,7 +77,6 @@ Fill              SUCCESS Property ['Name': Value] =  'ErrorsPrint':True
 Fill              SUCCESS Property ['Name': Value] =  'IsIOBound':False
 Fill              SUCCESS Property ['Name': Value] =  'NeededResources':[  ]
 Fill              SUCCESS Property ['Name': Value] =  'Cardinality':1
-Fill              SUCCESS Property ['Name': Value] =  'IsClonable':False
 Fill              SUCCESS Property ['Name': Value] =  'RegisterForContextService':True
 Fill              SUCCESS Property ['Name': Value] =  'MonitorService':MonitorSvc
 Fill              SUCCESS Property ['Name': Value] =  'Timeline':False
diff --git a/GaudiExamples/tests/qmtest/refs/GaudiCommonTests.ref b/GaudiExamples/tests/qmtest/refs/GaudiCommonTests.ref
index c5869fc909851af1357d27fdf169813639c306ab..9a5dd6ccf42df1fb224d9c1af9c36bacbab1f9aa 100644
--- a/GaudiExamples/tests/qmtest/refs/GaudiCommonTests.ref
+++ b/GaudiExamples/tests/qmtest/refs/GaudiCommonTests.ref
@@ -26,7 +26,7 @@ StatusCodeSvc        INFO initialize
 Test1               DEBUG Property update for OutputLevel : new value = 2
 Test1               DEBUG Initialize base class GaudiCommon<Algorithm>
 Test1               DEBUG could not locate CounterSummarySvc, no counter summary will be made
-Test1               DEBUG List of ALL properties of GaudiCommonTests/Test1  #properties = 36
+Test1               DEBUG List of ALL properties of GaudiCommonTests/Test1  #properties = 35
 Test1               DEBUG Property ['Name': Value] =  'RequireObjects':[  ]
 Test1               DEBUG Property ['Name': Value] =  'VetoObjects':[  ]
 Test1               DEBUG Property ['Name': Value] =  'StatEntityList':[  ]
@@ -44,7 +44,6 @@ Test1               DEBUG Property ['Name': Value] =  'ErrorsPrint':True
 Test1               DEBUG Property ['Name': Value] =  'IsIOBound':False
 Test1               DEBUG Property ['Name': Value] =  'NeededResources':[  ]
 Test1               DEBUG Property ['Name': Value] =  'Cardinality':1
-Test1               DEBUG Property ['Name': Value] =  'IsClonable':False
 Test1               DEBUG Property ['Name': Value] =  'RegisterForContextService':True
 Test1               DEBUG Property ['Name': Value] =  'MonitorService':MonitorSvc
 Test1               DEBUG Property ['Name': Value] =  'Timeline':False
@@ -69,7 +68,7 @@ Test1               DEBUG Data Deps for Test1
 Test2               DEBUG Property update for OutputLevel : new value = 2
 Test2               DEBUG Initialize base class GaudiCommon<Algorithm>
 Test2               DEBUG could not locate CounterSummarySvc, no counter summary will be made
-Test2               DEBUG List of ALL properties of GaudiCommonTests/Test2  #properties = 36
+Test2               DEBUG List of ALL properties of GaudiCommonTests/Test2  #properties = 35
 Test2               DEBUG Property ['Name': Value] =  'RequireObjects':[  ]
 Test2               DEBUG Property ['Name': Value] =  'VetoObjects':[  ]
 Test2               DEBUG Property ['Name': Value] =  'StatEntityList':[  ]
@@ -87,7 +86,6 @@ Test2               DEBUG Property ['Name': Value] =  'ErrorsPrint':True
 Test2               DEBUG Property ['Name': Value] =  'IsIOBound':False
 Test2               DEBUG Property ['Name': Value] =  'NeededResources':[  ]
 Test2               DEBUG Property ['Name': Value] =  'Cardinality':1
-Test2               DEBUG Property ['Name': Value] =  'IsClonable':False
 Test2               DEBUG Property ['Name': Value] =  'RegisterForContextService':True
 Test2               DEBUG Property ['Name': Value] =  'MonitorService':MonitorSvc
 Test2               DEBUG Property ['Name': Value] =  'Timeline':False
diff --git a/GaudiExamples/tests/qmtest/refs/Histograms.ref b/GaudiExamples/tests/qmtest/refs/Histograms.ref
index 44389cc1bd3fc8090b161fe243b97e84db3ea85d..ce7626988aa7e5b1b18bd669fe26b966d379da36 100644
--- a/GaudiExamples/tests/qmtest/refs/Histograms.ref
+++ b/GaudiExamples/tests/qmtest/refs/Histograms.ref
@@ -29,7 +29,7 @@ ApplicationMgr       INFO Application Manager Configured successfully
 SimpleHistos        DEBUG Property update for OutputLevel : new value = 2
 SimpleHistos        DEBUG Initialize base class GaudiCommon<Algorithm>
 SimpleHistos        DEBUG could not locate CounterSummarySvc, no counter summary will be made
-SimpleHistos        DEBUG List of ALL properties of GaudiHistoAlgorithm/SimpleHistos  #properties = 51
+SimpleHistos        DEBUG List of ALL properties of GaudiHistoAlgorithm/SimpleHistos  #properties = 50
 SimpleHistos        DEBUG Property ['Name': Value] =  'AutoStringIDPurgeMap':{ '/' : '=SLASH=' }
 SimpleHistos        DEBUG Property ['Name': Value] =  'UseSequencialNumericAutoIDs':False
 SimpleHistos        DEBUG Property ['Name': Value] =  'HeaderFor1DHistoTable':|   Title                                       |    #    |     Mean   |    RMS     |  Skewness  |  Kurtosis  |
@@ -62,7 +62,6 @@ SimpleHistos        DEBUG Property ['Name': Value] =  'ErrorsPrint':True
 SimpleHistos        DEBUG Property ['Name': Value] =  'IsIOBound':False
 SimpleHistos        DEBUG Property ['Name': Value] =  'NeededResources':[  ]
 SimpleHistos        DEBUG Property ['Name': Value] =  'Cardinality':1
-SimpleHistos        DEBUG Property ['Name': Value] =  'IsClonable':False
 SimpleHistos        DEBUG Property ['Name': Value] =  'RegisterForContextService':True
 SimpleHistos        DEBUG Property ['Name': Value] =  'MonitorService':MonitorSvc
 SimpleHistos        DEBUG Property ['Name': Value] =  'Timeline':False
@@ -92,7 +91,7 @@ SimpleHistos        DEBUG GaudiHistoAlgorithm:: The histogram path is set to be
 SimpleHistos        DEBUG input handles: 0
 SimpleHistos        DEBUG output handles: 0
 SimpleHistos        DEBUG Data Deps for SimpleHistos
-Histos2           SUCCESS List of ALL properties of Gaudi::Examples::HistoProps/Histos2  #properties = 53
+Histos2           SUCCESS List of ALL properties of Gaudi::Examples::HistoProps/Histos2  #properties = 52
 Histos2           SUCCESS Property ['Name': Value] =  'Histo2':('',-5.00000,5.00000,200)
 Histos2           SUCCESS Property ['Name': Value] =  'Histo1':('Histogram1',-3.00000,3.00000,200)
 Histos2           SUCCESS Property ['Name': Value] =  'AutoStringIDPurgeMap':{ '/' : '=SLASH=' }
@@ -127,7 +126,6 @@ Histos2           SUCCESS Property ['Name': Value] =  'ErrorsPrint':True
 Histos2           SUCCESS Property ['Name': Value] =  'IsIOBound':False
 Histos2           SUCCESS Property ['Name': Value] =  'NeededResources':[  ]
 Histos2           SUCCESS Property ['Name': Value] =  'Cardinality':1
-Histos2           SUCCESS Property ['Name': Value] =  'IsClonable':False
 Histos2           SUCCESS Property ['Name': Value] =  'RegisterForContextService':True
 Histos2           SUCCESS Property ['Name': Value] =  'MonitorService':MonitorSvc
 Histos2           SUCCESS Property ['Name': Value] =  'Timeline':False
diff --git a/GaudiExamples/tests/qmtest/refs/ROOT_IO/ExtCollWrite.ref b/GaudiExamples/tests/qmtest/refs/ROOT_IO/ExtCollWrite.ref
index 80ec6fccc6c10498f173865c3a1609ab40647df0..9955b41d3caf18fb44ee9d7d52b708718064e31a 100644
--- a/GaudiExamples/tests/qmtest/refs/ROOT_IO/ExtCollWrite.ref
+++ b/GaudiExamples/tests/qmtest/refs/ROOT_IO/ExtCollWrite.ref
@@ -35,7 +35,7 @@ EventAlgs            INFO Member list: Gaudi::Examples::ExtendedEvtCol/Fill
 RndmGenSvc.Engine    INFO Generator engine type:CLHEP::RanluxEngine
 RndmGenSvc.Engine    INFO Current Seed:1234567 Luxury:3
 RndmGenSvc           INFO Using Random engine:HepRndm::Engine<CLHEP::RanluxEngine>
-Fill              SUCCESS List of ALL properties of Gaudi::Examples::ExtendedEvtCol/Fill  #properties = 66
+Fill              SUCCESS List of ALL properties of Gaudi::Examples::ExtendedEvtCol/Fill  #properties = 65
 Fill              SUCCESS Property ['Name': Value] =  'Tracks':MyTracks
 Fill              SUCCESS Property ['Name': Value] =  'EvtColDir':Fill
 Fill              SUCCESS Property ['Name': Value] =  'EvtColTopDir':
@@ -83,7 +83,6 @@ Fill              SUCCESS Property ['Name': Value] =  'ErrorsPrint':True
 Fill              SUCCESS Property ['Name': Value] =  'IsIOBound':False
 Fill              SUCCESS Property ['Name': Value] =  'NeededResources':[  ]
 Fill              SUCCESS Property ['Name': Value] =  'Cardinality':1
-Fill              SUCCESS Property ['Name': Value] =  'IsClonable':False
 Fill              SUCCESS Property ['Name': Value] =  'RegisterForContextService':True
 Fill              SUCCESS Property ['Name': Value] =  'MonitorService':MonitorSvc
 Fill              SUCCESS Property ['Name': Value] =  'Timeline':False
diff --git a/GaudiExamples/tests/qmtest/refs/TBB/GaudiCommonTests.ref b/GaudiExamples/tests/qmtest/refs/TBB/GaudiCommonTests.ref
index fc86bc0608300b04a38de20122e9129910f8b267..dd09616947a0dcb4916634c67e638d5c96de29c1 100644
--- a/GaudiExamples/tests/qmtest/refs/TBB/GaudiCommonTests.ref
+++ b/GaudiExamples/tests/qmtest/refs/TBB/GaudiCommonTests.ref
@@ -30,7 +30,7 @@ StatusCodeSvc        INFO initialize
 Test1               DEBUG Property update for OutputLevel : new value = 2
 Test1               DEBUG Initialize base class GaudiCommon<Algorithm>
 Test1               DEBUG could not locate CounterSummarySvc, no counter summary will be made
-Test1               DEBUG List of ALL properties of GaudiCommonTests/Test1  #properties = 36
+Test1               DEBUG List of ALL properties of GaudiCommonTests/Test1  #properties = 35
 Test1               DEBUG Property ['Name': Value] =  'RequireObjects':[  ]
 Test1               DEBUG Property ['Name': Value] =  'VetoObjects':[  ]
 Test1               DEBUG Property ['Name': Value] =  'StatEntityList':[  ]
@@ -48,7 +48,6 @@ Test1               DEBUG Property ['Name': Value] =  'ErrorsPrint':True
 Test1               DEBUG Property ['Name': Value] =  'IsIOBound':False
 Test1               DEBUG Property ['Name': Value] =  'NeededResources':[  ]
 Test1               DEBUG Property ['Name': Value] =  'Cardinality':1
-Test1               DEBUG Property ['Name': Value] =  'IsClonable':False
 Test1               DEBUG Property ['Name': Value] =  'RegisterForContextService':True
 Test1               DEBUG Property ['Name': Value] =  'MonitorService':MonitorSvc
 Test1               DEBUG Property ['Name': Value] =  'Timeline':False
@@ -73,7 +72,7 @@ Test1               DEBUG Data Deps for Test1
 Test2               DEBUG Property update for OutputLevel : new value = 2
 Test2               DEBUG Initialize base class GaudiCommon<Algorithm>
 Test2               DEBUG could not locate CounterSummarySvc, no counter summary will be made
-Test2               DEBUG List of ALL properties of GaudiCommonTests/Test2  #properties = 36
+Test2               DEBUG List of ALL properties of GaudiCommonTests/Test2  #properties = 35
 Test2               DEBUG Property ['Name': Value] =  'RequireObjects':[  ]
 Test2               DEBUG Property ['Name': Value] =  'VetoObjects':[  ]
 Test2               DEBUG Property ['Name': Value] =  'StatEntityList':[  ]
@@ -91,7 +90,6 @@ Test2               DEBUG Property ['Name': Value] =  'ErrorsPrint':True
 Test2               DEBUG Property ['Name': Value] =  'IsIOBound':False
 Test2               DEBUG Property ['Name': Value] =  'NeededResources':[  ]
 Test2               DEBUG Property ['Name': Value] =  'Cardinality':1
-Test2               DEBUG Property ['Name': Value] =  'IsClonable':False
 Test2               DEBUG Property ['Name': Value] =  'RegisterForContextService':True
 Test2               DEBUG Property ['Name': Value] =  'MonitorService':MonitorSvc
 Test2               DEBUG Property ['Name': Value] =  'Timeline':False
diff --git a/GaudiExamples/tests/qmtest/refs/conditional_output/write.ref b/GaudiExamples/tests/qmtest/refs/conditional_output/write.ref
index e1dc71b7dbaadf670f27c43f00ba9947a5bf871e..e68103358ccd3651d1ec49e08275e1b26015f69b 100644
--- a/GaudiExamples/tests/qmtest/refs/conditional_output/write.ref
+++ b/GaudiExamples/tests/qmtest/refs/conditional_output/write.ref
@@ -72,7 +72,7 @@ TimelineSvc         DEBUG initialize
 DataCreator       VERBOSE ServiceLocatorHelper::service: found service TimelineSvc
 DataCreator         DEBUG Initialize base class GaudiCommon<Algorithm>
 DataCreator         DEBUG could not locate CounterSummarySvc, no counter summary will be made
-DataCreator         DEBUG List of ALL properties of GaudiTesting::PutDataObjectAlg/DataCreator  #properties = 38
+DataCreator         DEBUG List of ALL properties of GaudiTesting::PutDataObjectAlg/DataCreator  #properties = 37
 DataCreator         DEBUG Property ['Name': Value] =  'DataSvc':EventDataSvc
 DataCreator         DEBUG Property ['Name': Value] =  'Paths':[ 'A' , 'B' , 'C' , 'D' ]
 DataCreator         DEBUG Property ['Name': Value] =  'RequireObjects':[  ]
@@ -92,7 +92,6 @@ DataCreator         DEBUG Property ['Name': Value] =  'ErrorsPrint':True
 DataCreator         DEBUG Property ['Name': Value] =  'IsIOBound':False
 DataCreator         DEBUG Property ['Name': Value] =  'NeededResources':[  ]
 DataCreator         DEBUG Property ['Name': Value] =  'Cardinality':1
-DataCreator         DEBUG Property ['Name': Value] =  'IsClonable':False
 DataCreator         DEBUG Property ['Name': Value] =  'RegisterForContextService':True
 DataCreator         DEBUG Property ['Name': Value] =  'MonitorService':MonitorSvc
 DataCreator         DEBUG Property ['Name': Value] =  'Timeline':False
@@ -124,7 +123,7 @@ OddEvents         VERBOSE ServiceLocatorHelper::service: found service EventData
 OddEvents         VERBOSE ServiceLocatorHelper::service: found service TimelineSvc
 OddEvents           DEBUG Initialize base class GaudiCommon<Algorithm>
 OddEvents           DEBUG could not locate CounterSummarySvc, no counter summary will be made
-OddEvents           DEBUG List of ALL properties of GaudiTesting::OddEventsFilter/OddEvents  #properties = 36
+OddEvents           DEBUG List of ALL properties of GaudiTesting::OddEventsFilter/OddEvents  #properties = 35
 OddEvents           DEBUG Property ['Name': Value] =  'RequireObjects':[  ]
 OddEvents           DEBUG Property ['Name': Value] =  'VetoObjects':[  ]
 OddEvents           DEBUG Property ['Name': Value] =  'StatEntityList':[  ]
@@ -142,7 +141,6 @@ OddEvents           DEBUG Property ['Name': Value] =  'ErrorsPrint':True
 OddEvents           DEBUG Property ['Name': Value] =  'IsIOBound':False
 OddEvents           DEBUG Property ['Name': Value] =  'NeededResources':[  ]
 OddEvents           DEBUG Property ['Name': Value] =  'Cardinality':1
-OddEvents           DEBUG Property ['Name': Value] =  'IsClonable':False
 OddEvents           DEBUG Property ['Name': Value] =  'RegisterForContextService':True
 OddEvents           DEBUG Property ['Name': Value] =  'MonitorService':MonitorSvc
 OddEvents           DEBUG Property ['Name': Value] =  'Timeline':False
@@ -172,7 +170,7 @@ EvenEvents        VERBOSE ServiceLocatorHelper::service: found service EventData
 EvenEvents        VERBOSE ServiceLocatorHelper::service: found service TimelineSvc
 EvenEvents          DEBUG Initialize base class GaudiCommon<Algorithm>
 EvenEvents          DEBUG could not locate CounterSummarySvc, no counter summary will be made
-EvenEvents          DEBUG List of ALL properties of GaudiTesting::EvenEventsFilter/EvenEvents  #properties = 36
+EvenEvents          DEBUG List of ALL properties of GaudiTesting::EvenEventsFilter/EvenEvents  #properties = 35
 EvenEvents          DEBUG Property ['Name': Value] =  'RequireObjects':[  ]
 EvenEvents          DEBUG Property ['Name': Value] =  'VetoObjects':[  ]
 EvenEvents          DEBUG Property ['Name': Value] =  'StatEntityList':[  ]
@@ -190,7 +188,6 @@ EvenEvents          DEBUG Property ['Name': Value] =  'ErrorsPrint':True
 EvenEvents          DEBUG Property ['Name': Value] =  'IsIOBound':False
 EvenEvents          DEBUG Property ['Name': Value] =  'NeededResources':[  ]
 EvenEvents          DEBUG Property ['Name': Value] =  'Cardinality':1
-EvenEvents          DEBUG Property ['Name': Value] =  'IsClonable':False
 EvenEvents          DEBUG Property ['Name': Value] =  'RegisterForContextService':True
 EvenEvents          DEBUG Property ['Name': Value] =  'MonitorService':MonitorSvc
 EvenEvents          DEBUG Property ['Name': Value] =  'Timeline':False
diff --git a/GaudiHive/options/ReadAndWriteWhiteBoard.py b/GaudiHive/options/ReadAndWriteWhiteBoard.py
index 64160094dd69ca662d0cce0bedeca3214e8d712c..391d0d21281dceb591f5c99bd0708d8575987ce6 100644
--- a/GaudiHive/options/ReadAndWriteWhiteBoard.py
+++ b/GaudiHive/options/ReadAndWriteWhiteBoard.py
@@ -34,7 +34,6 @@ loader = HiveReadAlgorithm("Loader",
                            )
 
 reader = ReadHandleAlg ("Reader",
-                         IsClonable=True,
                          OutputLevel=INFO,
                          NeededResources=["ROOTIO"])
 reader.Input.Path=product_name
diff --git a/GaudiHive/src/AlgResourcePool.cpp b/GaudiHive/src/AlgResourcePool.cpp
index 810c096da750b41a8f4a3adaea5cbb9cfd7177db..49fa6c4d942ad255e72ff8d8c7b1b5b39f74de25 100644
--- a/GaudiHive/src/AlgResourcePool.cpp
+++ b/GaudiHive/src/AlgResourcePool.cpp
@@ -337,7 +337,26 @@ StatusCode AlgResourcePool::decodeTopAlgs()    {
 
     queue->push(ialgo);
     m_algList.push_back(ialgo);
-    m_n_of_allowed_instances[algo_id] = ialgo->cardinality();
+    if (ialgo->isClonable()) {
+      m_n_of_allowed_instances[algo_id] = ialgo->cardinality();
+    } else {
+      if (ialgo->cardinality() == 1) {
+        m_n_of_allowed_instances[algo_id] = 1;
+      } else {
+        if (! m_overrideUnClonable) {
+          info() << "Algorithm " << ialgo->name() 
+                 << " is un-Clonable but Cardinality was set to " 
+                 << ialgo->cardinality()
+                 << ". Only creating 1 instance" << endmsg;
+          m_n_of_allowed_instances[algo_id] = 1;
+        } else {
+          warning() << "Overriding UnClonability of Algorithm " 
+                    << ialgo->name() << ". Setting Cardinality to "
+                    << ialgo->cardinality() << endmsg;
+          m_n_of_allowed_instances[algo_id] = ialgo->cardinality();
+        }
+      }
+    }
     m_n_of_created_instances[algo_id] = 1;
 
     state_type requirements(0);
@@ -357,7 +376,7 @@ StatusCode AlgResourcePool::decodeTopAlgs()    {
 
     // potentially create clones; if not lazy creation we have to do it now
     if (!m_lazyCreation) {
-      for (unsigned int i =1, end =ialgo->cardinality();i<end; ++i){
+      for (unsigned int i =1, end =m_n_of_allowed_instances[algo_id];i<end; ++i){
         debug() << "type/name to create clone of: " << item_type << "/"
                 << item_name << endmsg;
         IAlgorithm* ialgoClone(nullptr);
diff --git a/GaudiHive/src/AlgResourcePool.h b/GaudiHive/src/AlgResourcePool.h
index a7a2773cb0caa078e2ca3f0ed07d697c38119792..41dda85359280aa211e1759bcc12676a89ac6d11 100644
--- a/GaudiHive/src/AlgResourcePool.h
+++ b/GaudiHive/src/AlgResourcePool.h
@@ -81,6 +81,8 @@ private:
   Gaudi::Property<bool> m_lazyCreation{this, "CreateLazily", false, ""};
   Gaudi::Property<std::vector<std::string>> m_topAlgNames{
       this, "TopAlg", {}, "names of the algorithms to be passed to the algorithm manager"};
+  Gaudi::Property<bool> m_overrideUnClonable{this, "OverrideUnClonable", false, 
+      "override the Un-Clonability of Algorithms. Use with caution!"};
 
   /// The list of all algorithms created withing the Pool which are not top
   ListAlg m_algList;
diff --git a/GaudiHive/src/CPUCruncher.h b/GaudiHive/src/CPUCruncher.h
index b65c3f58e67ff681a7d5531a519c3f2ed403760e..304806757770cdb6229e7899f7ebc4aa7510d640 100644
--- a/GaudiHive/src/CPUCruncher.h
+++ b/GaudiHive/src/CPUCruncher.h
@@ -22,6 +22,8 @@ class CPUCruncher : public GaudiAlgorithm
 public:
   typedef tbb::concurrent_hash_map<std::string, unsigned int> CHM;
 
+  bool isClonable() const override { return true; }
+
   /// the execution of the algorithm
   StatusCode execute() override;
   /// Its initialization
diff --git a/GaudiKernel/GaudiKernel/Algorithm.h b/GaudiKernel/GaudiKernel/Algorithm.h
index c1472c47c23b80631ec94da762554f812562ea2b..63351d4fb1b71f9bc670f475cfab4ff35ad5f06b 100644
--- a/GaudiKernel/GaudiKernel/Algorithm.h
+++ b/GaudiKernel/GaudiKernel/Algorithm.h
@@ -480,8 +480,8 @@ private:
   void initToolHandles() const;
 
 public:
-  /// Specifies the clonability of the algorithm
-  bool isClonable() const override { return m_isClonable; }
+  // /// Specifies the clonability of the algorithm
+  // bool isClonable() const override { return false; }
 
   /// Return the cardinality
   unsigned int cardinality() const override { return m_cardinality; }
@@ -547,7 +547,7 @@ private:
 protected:
   /// Hook for for derived classes to provide a custom visitor for data handles.
   std::unique_ptr<IDataHandleVisitor> m_updateDataHandles;
-
+  
 private:
   // Properties
   Gaudi::Property<int> m_outputLevel{this, "OutputLevel", MSG::NIL, "output level"};
@@ -574,7 +574,6 @@ private:
   Gaudi::Property<bool> m_registerContext{this, "RegisterForContextService", false,
                                           "flag to enforce the registration for Algorithm Context Service"};
 
-  Gaudi::Property<bool> m_isClonable{this, "IsClonable", false, "thread-safe enough for cloning?"};
   Gaudi::Property<int> m_cardinality{this, "Cardinality", 1, "how many clones to create - 0 means algo is reentrant"};
   Gaudi::Property<std::vector<std::string>> m_neededResources{
       this, "NeededResources", {}, "named resources needed during event looping"};
diff --git a/GaudiKernel/GaudiKernel/IAlgorithm.h b/GaudiKernel/GaudiKernel/IAlgorithm.h
index beb7de33e9b179a96347b89bb23ac823bed791d0..4e5fcb48b75202acec074ab277307eef52696e75 100644
--- a/GaudiKernel/GaudiKernel/IAlgorithm.h
+++ b/GaudiKernel/GaudiKernel/IAlgorithm.h
@@ -52,7 +52,7 @@ public:
 
   /** Specify if the algorithm is clonable
    */
-  virtual bool isClonable() const = 0;
+  virtual bool isClonable() const { return false; }
 
   /** Cardinality (Maximum number of clones that can exist)
    *  special value 0 means that algorithm is reentrant
diff --git a/GaudiKernel/src/Lib/Algorithm.cpp b/GaudiKernel/src/Lib/Algorithm.cpp
index 6787c1150f5aa37fe5b1b7bd3ad50ecc4b1ee08f..f83baaad28560777bf61d69c92e4da8343ddf90f 100644
--- a/GaudiKernel/src/Lib/Algorithm.cpp
+++ b/GaudiKernel/src/Lib/Algorithm.cpp
@@ -150,11 +150,6 @@ StatusCode Algorithm::sysInitialize()
     sc = StatusCode::FAILURE;
   }
 
-  // Set IsClonable to true if the Cardinality is greater than one
-  if ( m_cardinality > 1 ) {
-    m_isClonable = true;
-  }
-
   algExecStateSvc()->addAlg( this );
 
   //