diff --git a/TileCalorimeter/TileConditions/TileConditions/TileCablingService.h b/TileCalorimeter/TileConditions/TileConditions/TileCablingService.h
index 9fa44eb28fba12d3e337dda731a7cfa62c967933..8fbb9680376ac7b9590627c25bdbb87743cff1ba 100644
--- a/TileCalorimeter/TileConditions/TileConditions/TileCablingService.h
+++ b/TileCalorimeter/TileConditions/TileConditions/TileCablingService.h
@@ -16,12 +16,11 @@
 #include "CaloIdentifier/TileTBID.h" 
 #include "CaloIdentifier/CaloLVL1_ID.h" 
 
-#include "AthenaKernel/MsgStreamMember.h"
+#include "CxxUtils/checker_macros.h"
 
 #include <vector>
 
-class TileCablingService
-{
+class ATLAS_CHECK_THREAD_SAFETY TileCablingService {
   friend class TileInfoLoader;
   friend class TileDetectorTool;
   friend class TileDetectorFactory;
@@ -32,11 +31,7 @@ class TileCablingService
 public:
 
     /** get pointer to service instance*/
-    static TileCablingService * instance(bool del);
-    static TileCablingService * getInstance() {return instance(false); }
-
-    /** delete service instance */
-    static TileCablingService * deleteInstance() {return instance(true); }
+    static TileCablingService* getInstance();
     
     // Conversion between TileID and Trigger Tower ID
 
@@ -105,11 +100,6 @@ public:
     int getMaxGains(void) const { return m_maxGains; };
 
 
-    /// Log a message using the Athena controlled logging system
-    MsgStream& msg( MSG::Level lvl ) const { return m_msg << lvl; }
-    /// Check whether the logging system is active at the provided verbosity level
-    bool msgLvl( MSG::Level lvl ) const { return m_msg.get().level() <= lvl; }
-
 protected:
     
     /** Default constructor protected */                
@@ -237,7 +227,7 @@ private:
     }
     
     TileCablingType m_cablingType;
-    void setCablingType (TileCablingType type);
+    bool setCablingType (TileCablingType type);
   
     int m_drawer_table[512];
     int m_channel_table[512];
@@ -276,8 +266,6 @@ private:
    int m_maxChannels;
    int m_maxGains;
 
-   mutable Athena::MsgStreamMember m_msg;
-
 public:
 
     inline const TileID*       getTileID()         const { return m_tileID; }
diff --git a/TileCalorimeter/TileConditions/TileConditions/TileCablingSvc.h b/TileCalorimeter/TileConditions/TileConditions/TileCablingSvc.h
index b7cc47c115cd049a0e70715ad034db7a0479bbee..49cb2b81862892c21d3e580455082a86a6b7ca43 100644
--- a/TileCalorimeter/TileConditions/TileConditions/TileCablingSvc.h
+++ b/TileCalorimeter/TileConditions/TileConditions/TileCablingSvc.h
@@ -1,20 +1,21 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TILECONDITIONS_TILECABLINGSVC_H
 #define TILECONDITIONS_TILECABLINGSVC_H
 
-// Gaudi includes
-#include "GaudiKernel/ServiceHandle.h"
+// Tile includes
+#include "TileConditions/TileCablingService.h"
 
 // Athena includes
 #include "AthenaBaseComps/AthService.h"
 #include "AthenaKernel/IOVSvcDefs.h"
 #include "Identifier/Identifier.h"
+#include "CxxUtils/checker_macros.h"
 
-// Tile includes
-#include "TileConditions/TileCablingService.h"
+// Gaudi includes
+#include "GaudiKernel/ServiceHandle.h"
 
 // Forward declaration
 class StoreGateSvc;
@@ -25,7 +26,7 @@ template<class TYPE> class SvcFactory;
 //NGO At some point TileCablingService should be made a tool, but this will introduce
 //NGO many upstream code changes.
 
-class TileCablingSvc: public AthService {
+class ATLAS_CHECK_THREAD_SAFETY TileCablingSvc: public AthService {
     friend class SvcFactory<TileCablingSvc> ;
 
   public:
diff --git a/TileCalorimeter/TileConditions/src/TileCablingService.cxx b/TileCalorimeter/TileConditions/src/TileCablingService.cxx
index d644a0f8f04ed114a4ba038243730373fb349cb7..a231a6c6a2062daf4b87c7d74c171355ec59e1bc 100644
--- a/TileCalorimeter/TileConditions/src/TileCablingService.cxx
+++ b/TileCalorimeter/TileConditions/src/TileCablingService.cxx
@@ -5,8 +5,6 @@
 #include "TileConditions/TileCablingService.h"
 #include "TileCalibBlobObjs/TileCalibUtils.h"
 
-#include "AthenaBaseComps/AthMsgStreamMacros.h"
-
 #include <string>
 #include <iostream>
 #include <algorithm>
@@ -14,14 +12,10 @@
 // Singleton method
 
 //------------------------------------------------------------
-TileCablingService * TileCablingService::instance(bool del)
+TileCablingService * TileCablingService::getInstance()
 {
-    static  TileCablingService * cablingService = new TileCablingService();
-    if (del) {
-        delete cablingService;
-        cablingService = 0;
-    }
-    return cablingService;
+    static TileCablingService cablingService ATLAS_THREAD_SAFE;
+    return &cablingService;
 }
 
 // default constructor
@@ -41,7 +35,6 @@ TileCablingService::TileCablingService()
   , m_run3(false)
   , m_maxChannels(TileCalibUtils::MAX_CHAN)
   , m_maxGains(TileCalibUtils::MAX_GAIN)
-  , m_msg("TileCablingService")
 {
   m_testBeam = false;
   // old cabling for simulation - no special EB modules, wrong numbers for E1-E4
@@ -217,7 +210,7 @@ TileCablingService::setTestBeam (bool testBeam)
   }
 }
 
-void
+bool
 TileCablingService::setCablingType(TileCablingService::TileCablingType type)
 { 
 // cabling type can be:
@@ -230,8 +223,6 @@ TileCablingService::setCablingType(TileCablingService::TileCablingType type)
 
   m_maxGains = std::round(((double) m_tileID->adc_hash_max()) / m_tileID->pmt_hash_max());
 
-  ATH_MSG_DEBUG("Detected maximum number of gains: " << m_maxGains);
-
   if (TileCablingService::TestBeam == type || TileCablingService::OldSim == type) {
     // old cabling for simulation - no special EB modules, wrong numbers for E1-E4
     m_EBAspec = -1;
@@ -322,12 +313,12 @@ TileCablingService::setCablingType(TileCablingService::TileCablingType type)
         }
         
       } else {
-        ATH_MSG_ERROR("Tile ID helpers should be set up before setting UpgradeABC cabling type!");
+        return false;
       }
-
     }
 
   }
+  return true;
 }
 
 void
@@ -1999,7 +1990,7 @@ TileCablingService::hwid2tbtype ( int drawer )
   // #define ADD_FADC_FRAG 0x006
   // #define ECAL_ADC_FRAG 0x007
   //
-   static int tbtype[8] = {
+   static const int tbtype[8] = {
      TileTBID::TDC_TYPE,
      TileTBID::ADC_TYPE,
      TileTBID::ADC_TYPE,
@@ -2017,7 +2008,7 @@ TileCablingService::hwid2tbtype ( int drawer )
 int
 TileCablingService::hwid2tbmodule ( int drawer, int /* channel */ )
 {
-  static int tbmodule[8] = {
+  static const int tbmodule[8] = {
     0,
     TileTBID::CRACK_WALL,
     TileTBID::BACK_WALL,
diff --git a/TileCalorimeter/TileConditions/src/TileCablingSvc.cxx b/TileCalorimeter/TileConditions/src/TileCablingSvc.cxx
index 7d4958fb4bc22d61333e3392016c460581417db4..586f8da4817effc49f41ff0726ec7bf50f92e599 100644
--- a/TileCalorimeter/TileConditions/src/TileCablingSvc.cxx
+++ b/TileCalorimeter/TileConditions/src/TileCablingSvc.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
 */
 
 // Gaudi includes
@@ -221,8 +221,8 @@ StatusCode TileCablingSvc::initialize() {
   }
 
   ATH_MSG_INFO( "Setting Cabling type to " << m_cablingType );
-  m_cablingService->setCablingType((TileCablingService::TileCablingType) m_cablingType);
-
+  ATH_CHECK( m_cablingService->setCablingType((TileCablingService::TileCablingType) m_cablingType) );
+  ATH_MSG_DEBUG( "Maximum number of gains: " <<  m_cablingService->getMaxChannels());
 
   // ------------ Setting TileCal channel hashes in CaloDDE -------------
   // ---------- it can be done only after we set cabling type -----------
@@ -612,7 +612,6 @@ StatusCode TileCablingSvc::initialize() {
 //
 //_____________________________________________________________________________
 StatusCode TileCablingSvc::finalize() {
-  ATH_MSG_DEBUG( "finalize called, deleting TileCablingService instance" );
-  m_cablingService = m_cablingService->deleteInstance();
+  ATH_MSG_DEBUG( "finalized" );
   return StatusCode::SUCCESS;
 }