diff --git a/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileROD_Decoder.h b/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileROD_Decoder.h
index bc1c4896c07548c491bd9e82939160026d2e3337..e7353766e236d6102ef55ba33fc37c766783e36e 100644
--- a/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileROD_Decoder.h
+++ b/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileROD_Decoder.h
@@ -500,30 +500,40 @@ class TileROD_Decoder: public AthAlgTool {
     TileRawChannel2Bytes m_rc2bytes;
     TileDigits2Bytes m_d2Bytes;
 
-//    std::string m_infoName; 
-
     const TileHWID* m_tileHWID;
-//    const TileInfo* m_tileInfo;
-
-    bool m_useFrag0;
-    bool m_useFrag1;
-    bool m_useFrag4;
-    bool m_useFrag5Raw;
-    bool m_useFrag5Reco;
-    bool m_ignoreFrag4HLT;
-
-    // thresholds for parabolic amplitude correction
-    float m_ampMinThresh; //!< correct amplitude if it's above amplitude threshold (in ADC counts)
-    float m_ampMinThresh_pC; //!< correct amplitude if it's above amplitude threshold (in pC)
-    float m_ampMinThresh_MeV; //!< correct amplitude if it's above amplitude threshold (in MeV)
-    float m_timeMinThresh; //!< correct amplitude is time is above time min threshold
-    float m_timeMaxThresh; //!< correct amplitude is time is below time max threshold
-    void updateAmpThreshold(float ampMinThresh);
 
-    // outsize this time withdow, all amplitudes taken from Reco fragment
-    // will be set to zero 
-    float m_allowedTimeMin; //!< set amp to zero if time is below allowed time min
-    float m_allowedTimeMax; //!< set amp to zero if time is above allowed time max
+    Gaudi::Property<bool> m_useFrag0{this, "useFrag0", true, "Use frag0"};
+    Gaudi::Property<bool> m_useFrag1{this, "useFrag1", true, "Use frag1"};
+    Gaudi::Property<bool> m_useFrag4{this, "useFrag4", true, "User frag4"};
+    Gaudi::Property<bool> m_useFrag5Raw{this, "useFrag5Raw", false, "Use frag5 raw"};
+    Gaudi::Property<bool> m_useFrag5Reco{this, "useFrag5Reco", false, "Use frag5 reco"};
+    Gaudi::Property<bool> m_ignoreFrag4HLT{this, "ignoreFrag4HLT", false, "Ignore frag4 HLT"};
+
+    // Outside this time withdow, all amplitudes taken from Reco fragment will be set to zero
+    Gaudi::Property<float> m_allowedTimeMin{this, "AllowedTimeMin", -50.0,
+        "Set amplitude to zero if time is below allowed time minimum"};
+    Gaudi::Property<float> m_allowedTimeMax{this, "AllowedTimeMax", 50.0,
+        "Set amplitude to zero if time is above allowed time maximum"};
+
+    // Thresholds for parabolic amplitude correction
+    Gaudi::Property<float> m_ampMinThresh{this, "AmpMinForAmpCorrection", 15.0,
+        "Correct amplitude if it's above amplitude threshold (in ADC counts)"};
+    Gaudi::Property<float> m_timeMinThresh{this, "TimeMinForAmpCorrection", -12.5,
+        "Correct amplitude is time is above time minimum threshold"};
+    Gaudi::Property<float> m_timeMaxThresh{this, "TimeMaxForAmpCorrection", 12.5,
+        "Correct amplitude is time is below time maximum threshold"};
+
+    Gaudi::Property<unsigned int> m_fullTileRODs{this, "fullTileMode", 320000,
+        "Run from which to take the cabling (for the moment, either 320000 - full 2017 mode (default) - or 0 - 2016 mode)"};
+
+    Gaudi::Property<bool> m_verbose{this, "VerboseOutput", false, "Print extra information"};
+    Gaudi::Property<bool> m_calibrateEnergy{this, "calibrateEnergy", true, "Convert ADC counts to pCb for RawChannels"};
+    Gaudi::Property<bool> m_suppressDummyFragments{this, "suppressDummyFragments", false, "Suppress dummy fragments"};
+    Gaudi::Property<bool> m_maskBadDigits{this, "maskBadDigits", false,
+        "Put -1 in digits vector for channels with bad BCID or CRC in unpack_frag0"};
+
+    Gaudi::Property<int> m_maxWarningPrint{this, "MaxWarningPrint", 1000, "Maximum warning messages to print"};
+    Gaudi::Property<int> m_maxErrorPrint{this, "MaxErrorPrint", 1000, "Maximum error messages to print"};
 
     ToolHandle<TileCondToolTiming> m_tileToolTiming{this,
         "TileCondToolTiming", "TileCondToolTiming", "Tile timing tool"};
@@ -536,6 +546,11 @@ class TileROD_Decoder: public AthAlgTool {
     ToolHandle<TileL2Builder> m_L2Builder{this,
         "TileL2Builder", "TileL2Builder", "Tile L2 builder tool"};
 
+    // thresholds for parabolic amplitude correction
+    float m_ampMinThresh_pC; //!< correct amplitude if it's above amplitude threshold (in pC)
+    float m_ampMinThresh_MeV; //!< correct amplitude if it's above amplitude threshold (in MeV)
+    void updateAmpThreshold();
+
     // OFWeights for different units and different drawers:
     // every element contains OFC for single drawer and one of 4 different units
     mutable std::vector<uint32_t> m_OFWeights[4 * TileCalibUtils::MAX_DRAWERIDX];
@@ -546,29 +561,13 @@ class TileROD_Decoder: public AthAlgTool {
     // Mutex protecting access to weight vectors.
     mutable std::mutex m_OFWeightMutex;
 
-    float m_TileCellEthreshold;
-    bool m_verbose;
-    bool m_suppressDummyFragments;
-    // next three are needed to handle automatic conversion digits->channels->cells,
-    // when HLT request for cells, and finds only digits.
-    //TileRawChannelBuilder* m_RCBuilder;
-    std::string m_TileDefaultChannelBuilder;
-    bool m_calibrateEnergy;
-    // next two are needed to handle automatic conversion channels->cells,
-    // when HLT request for cells,which are not normally present in ByteStream
-    // TileCellBuilder* m_CellBuilder;
-    std::string m_TileDefaultCellBuilder;
-
     // fast decoding
     std::vector<int> m_Rw2Cell[4];
     std::vector<int> m_Rw2Pmt[4];
 
     TileFragHash m_hashFunc;
-
     bool m_of2Default;
 
-    bool m_maskBadDigits;
-
     // FIXME: Non-MT safe members --- used only by trigger, not offline.
     // Pointer to a MBTS cell collection
     TileCellCollection* m_MBTS;
@@ -577,9 +576,6 @@ class TileROD_Decoder: public AthAlgTool {
     // index of the MBTS channel
     int m_MBTS_channel;
 
-    int m_maxWarningPrint;
-    int m_maxErrorPrint;
-
     mutable std::atomic<int> m_WarningCounter;
     mutable std::atomic<int> m_ErrorCounter;
 
@@ -592,8 +588,6 @@ class TileROD_Decoder: public AthAlgTool {
     void initTileMuRcvHid2re();
 
     unsigned int m_maxChannels;
-    unsigned int m_fullTileRODs;
-
     bool m_checkMaskedDrawers;
 
     const uint32_t * get_data(const ROBData * rob) const {
diff --git a/TileCalorimeter/TileSvc/TileByteStream/src/TileROD_Decoder.cxx b/TileCalorimeter/TileSvc/TileByteStream/src/TileROD_Decoder.cxx
index fd42ec9e601a5dfd17ebb70fb97309a5a0424227..39ca1ec0eb06d14da607a7d892f251475a4b1891 100644
--- a/TileCalorimeter/TileSvc/TileByteStream/src/TileROD_Decoder.cxx
+++ b/TileCalorimeter/TileSvc/TileByteStream/src/TileROD_Decoder.cxx
@@ -33,41 +33,15 @@ static const InterfaceID IID_ITileROD_Decoder("TileROD_Decoder", 1, 0);
 TileROD_Decoder::TileROD_Decoder(const std::string& type, const std::string& name,
                                  const IInterface* parent)
   : AthAlgTool(type, name, parent)
-  , m_hid2re(0)
-  , m_hid2reHLT(0)
+  , m_of2Default(true)
+  , m_MBTS(nullptr)
+  , m_hid2re(nullptr)
+  , m_hid2reHLT(nullptr)
   , m_maxChannels(TileCalibUtils::MAX_CHAN)
-  , m_fullTileRODs(320000) // default 2017 full mode
   , m_checkMaskedDrawers(false)
 {
   declareInterface<TileROD_Decoder>(this);
-  
-  declareProperty("useFrag0", m_useFrag0 = true);
-  declareProperty("useFrag1", m_useFrag1 = true);
-  declareProperty("useFrag4", m_useFrag4 = true);
-  declareProperty("useFrag5Raw", m_useFrag5Raw = false);
-  declareProperty("useFrag5Reco", m_useFrag5Reco = false);
-  declareProperty("ignoreFrag4HLT", m_ignoreFrag4HLT = false);
-  
-  declareProperty("TileCellEthresholdMeV", m_TileCellEthreshold = -100000.);
-  declareProperty("TileDefaultChannelBuilder", m_TileDefaultChannelBuilder = "TileRawChannelBuilderFlatFilter/TileROD_RCBuilder");
-
-  declareProperty("VerboseOutput", m_verbose = false);
-  declareProperty("calibrateEnergy", m_calibrateEnergy = true); // convert ADC counts to pCb for RawChannels
-  declareProperty("suppressDummyFragments", m_suppressDummyFragments = false);
-  declareProperty("maskBadDigits", m_maskBadDigits = false); // put -1 in digits vector for channels with bad BCID or CRC in unpack_frag0
-  declareProperty("MaxWarningPrint", m_maxWarningPrint = 1000);
-  declareProperty("MaxErrorPrint", m_maxErrorPrint = 100);
-
-  declareProperty("AllowedTimeMin", m_allowedTimeMin = -50.); // set amp to zero if time is below allowed time min
-  declareProperty("AllowedTimeMax", m_allowedTimeMax =  50.); // set amp to zero if time is above allowed time max
-  declareProperty("fullTileMode", m_fullTileRODs); // run from which to take the cabling (for the moment, either 320000 - full 2017 mode - or 0 - 2016 mode)
-
-  updateAmpThreshold(15.);
-  m_timeMinThresh = -25;
-  m_timeMaxThresh = 25;
-
-  m_of2Default = true;
-  m_MBTS = NULL;
+
   m_WarningCounter = 0;
   m_ErrorCounter = 0;
   
@@ -76,8 +50,7 @@ TileROD_Decoder::TileROD_Decoder(const std::string& type, const std::string& nam
   }
 }
 
-void TileROD_Decoder::updateAmpThreshold(float ampMinThresh) {
-  m_ampMinThresh = ampMinThresh;
+void TileROD_Decoder::updateAmpThreshold() {
   m_ampMinThresh_pC = m_ampMinThresh * (12.5 / 1023.);
   m_ampMinThresh_MeV = m_ampMinThresh * (12.5 / 1023. / 1.05 * 1000.);
 }
@@ -115,6 +88,8 @@ int TileROD_Decoder::getErrorCounter() {
 
 StatusCode TileROD_Decoder::initialize() {
   
+  updateAmpThreshold();
+
   m_rc2bytes5.setVerbose(m_verbose);
   m_rc2bytes2.setVerbose(m_verbose);
   m_rc2bytes.setVerbose(m_verbose);
@@ -145,14 +120,6 @@ StatusCode TileROD_Decoder::initialize() {
     ATH_CHECK( m_tileBadChanTool.retrieve() );
   }
 
-  // Get Tool to TileChannelBuilder, to be used to convert automatically digits->channels.
-  //ATH_MSG_DEBUG( "creating algtool " << m_TileDefaultChannelBuilder );
-  //ListItem algRC(m_TileDefaultChannelBuilder);
-  //ATH_CHECK( toolSvc->retrieveTool(algRC.type(), algRC.name(), m_RCBuilder, this) );
-  
-  //ATH_MSG_DEBUG( "algtool " << m_TileDefaultChannelBuilder << " created " );
-  //ATH_CHECK( m_RCBuilder->setProperty(BooleanProperty("calibrateEnergy", m_calibrateEnergy)) );
-  
   m_maxChannels = TileCablingService::getInstance()->getMaxChannels();
 
   m_Rw2Cell[0].reserve(m_maxChannels);
@@ -3530,7 +3497,7 @@ uint32_t TileROD_Decoder::make_copyHLT(bool of2,
       ATH_MSG_ERROR("TileROD_Decderr::make_copyHLT is not MT-safe but used in "
                     "a MT job.  Results will likely be wrong.");
     }
-    if (m_MBTS != NULL && MBTS_chan >= 0) {
+    if (m_MBTS && MBTS_chan >= 0) {
       auto it = m_mapMBTS.find (frag_id);
       unsigned int idx = it != m_mapMBTS.end() ? it->second : 0u;
       if (idx < (*m_MBTS).size()) { // MBTS present (always last channel)