diff --git a/mvd/CbmMvd.h b/mvd/CbmMvd.h
index a377ddc9986873d026afee9a6d0e61c0a3a5687e..f6dbbc68b5cf60c3d45fa2311d7236663711a24e 100644
--- a/mvd/CbmMvd.h
+++ b/mvd/CbmMvd.h
@@ -19,7 +19,7 @@
 #define CBMMVD_H 1
 
 
-#include "SensorDataSheets/CbmMvdMimosa26AHR.h"
+//#include "SensorDataSheets/CbmMvdMimosa26AHR.h"
 
 #include "FairDetector.h"
 
diff --git a/mvd/CbmMvdClusterfinder.cxx b/mvd/CbmMvdClusterfinder.cxx
index 9b566b3c89ecdbed919841afa5148dadaede4b7e..4e17674ba287f57345e888b3df08d2f20a4d5656 100644
--- a/mvd/CbmMvdClusterfinder.cxx
+++ b/mvd/CbmMvdClusterfinder.cxx
@@ -158,10 +158,22 @@ InitStatus CbmMvdClusterfinder::Init()
     LOG(fatal) << "Geometry couldn't be loaded from file. No MVD digitizer available.";
   }
 
-  CbmMvdSensorClusterfinderTask* clusterTask = new CbmMvdSensorClusterfinderTask();
 
-  fDetector->AddPlugin(clusterTask);
+  // Add the digitizer plugin to all sensors
+  std::map<int, CbmMvdSensor*>& sensorMap = fDetector->GetSensorMap();
+  UInt_t plugincount=fDetector->GetPluginCount();
+
+  for (auto itr = sensorMap.begin();
+              itr != sensorMap.end(); itr++) {
+    CbmMvdSensorClusterfinderTask* clusterTask = new CbmMvdSensorClusterfinderTask();
+
+    itr->second->AddPlugin(clusterTask);
+    itr->second->SetDigiPlugin(plugincount);
+  }
+  fDetector->SetSensorArrayFilled(kTRUE);
+  fDetector->SetPluginCount(plugincount+1);
   fClusterPluginNr = (UInt_t)(fDetector->GetPluginArraySize());
+
   if (fShowDebugHistos) fDetector->ShowDebugHistos();
   fDetector->Init();
 
diff --git a/mvd/CbmMvdDetector.cxx b/mvd/CbmMvdDetector.cxx
index 21c151ed8246eec312f92f8cbffa27a0015bbe64..28ea7cd6ccfed81c52dbcd57bb7f869298792699 100644
--- a/mvd/CbmMvdDetector.cxx
+++ b/mvd/CbmMvdDetector.cxx
@@ -10,23 +10,27 @@
 #include "CbmMvdDetector.h"
 
 /// includes from CbmRoot
+#include "CbmDigiManager.h"
+#include "CbmMvdDetectorId.h"
 #include "CbmMvdDigi.h"
 #include "CbmMvdSensor.h"
 #include "plugins/CbmMvdSensorPlugin.h"
-#include "plugins/buffers/CbmMvdSensorBuffer.h"
-#include "plugins/buffers/CbmMvdSensorFrameBuffer.h"
-#include "plugins/buffers/CbmMvdSensorTrackingBuffer.h"
-#include "plugins/tasks/CbmMvdSensorClusterfinderTask.h"  //khun
-#include "plugins/tasks/CbmMvdSensorDigiToHitTask.h"
-#include "plugins/tasks/CbmMvdSensorDigitizerTBTask.h"
-//#include "plugins/tasks/CbmMvdSensorDigitizerTask.h"
-//#include "plugins/tasks/CbmMvdSensorFindHitTask.h"
-#include "CbmDigiManager.h"
-#include "plugins/tasks/CbmMvdSensorHitfinderTask.h"  //khun
 #include "plugins/tasks/CbmMvdSensorTask.h"
 #include "tools/CbmMvdGeoHandler.h"
 
-#include "CbmMvdDetectorId.h"
+
+// #include "plugins/buffers/CbmMvdSensorBuffer.h"
+// #include "plugins/buffers/CbmMvdSensorFrameBuffer.h"
+// #include "plugins/buffers/CbmMvdSensorTrackingBuffer.h"
+
+//   #include "plugins/tasks/CbmMvdSensorClusterfinderTask.h"  //khun
+//   #include "plugins/tasks/CbmMvdSensorDigiToHitTask.h"
+//   #include "plugins/tasks/CbmMvdSensorDigitizerTBTask.h"
+//   #include "plugins/tasks/CbmMvdSensorDigitizerTask.h"
+//   #include "plugins/tasks/CbmMvdSensorFindHitTask.h"
+//   #include "plugins/tasks/CbmMvdSensorHitfinderTask.h"  //khun
+
+
 
 /// includes from FairRoot
 #include <Logger.h>
@@ -35,6 +39,7 @@
 #include "TGeoBBox.h"
 #include "TGeoMatrix.h"
 #include "TGeoVolume.h"
+#include "TRandom.h"
 #include "TString.h"
 
 /// includes from c
@@ -195,12 +200,12 @@ void CbmMvdDetector::AddPlugin(CbmMvdSensorPlugin* plugin)
 
   CbmMvdSensor* sensor;
   Int_t nSensors                = fSensorArray->GetEntriesFast();
-  const TString digitizername   = "CbmMvdSensorDigitizerTask";
+  const TString digitizername   = "CbmMvdSensorDigitizerTask";    //done
   const TString digitizerTBname = "CbmMvdSensorDigitizerTBTask";
   //  const TString findername      = "CbmMvdSensorFindHitTask";
   //const TString framename = "CbmMvdSensorFrameBuffer";
   //const TString trackingname = "CbmMvdSensorTrackingBuffer";
-  const TString clustername   = "CbmMvdSensorClusterfinderTask";  //khun
+  const TString clustername   = "CbmMvdSensorClusterfinderTask";  //khun //done
   const TString hitname       = "CbmMvdSensorHitfinderTask";      //khun
   const TString digitohitname = "CbmMvdSensorDigiToHitTask";
 
@@ -211,54 +216,22 @@ void CbmMvdDetector::AddPlugin(CbmMvdSensorPlugin* plugin)
 
       if (plugin->ClassName() == digitizername) {
         LOG(fatal) << "Should never come here. Tasks are now added in CbmMvdDigitizer class";
-/*
-        CbmMvdSensorDigitizerTask* digiTask = new CbmMvdSensorDigitizerTask();
-        sensor                              = (CbmMvdSensor*) fSensorArray->At(i);
-        sensor->AddPlugin(digiTask);
-        sensor->SetDigiPlugin(fPluginCount);
-
-        //cout <<  "Adding Task CbmMvdSensorDigitizerTask at Sensor " << sensor->GetName() << endl;
-*/
       }
       else if (plugin->ClassName() == digitizerTBname) {
-        CbmMvdSensorDigitizerTBTask* digiTask = new CbmMvdSensorDigitizerTBTask();
-        sensor                                = (CbmMvdSensor*) fSensorArray->At(i);
-        sensor->AddPlugin(digiTask);
-        sensor->SetDigiPlugin(fPluginCount);
-
-        //cout <<  "Adding Task CbmMvdSensorDigitizerTask at Sensor " << sensor->GetName() << endl;
-        /*      } else if (plugin->ClassName() == findername) {
-        CbmMvdSensorFindHitTask* findTask = new CbmMvdSensorFindHitTask();
-        sensor                            = (CbmMvdSensor*) fSensorArray->At(i);
-        sensor->AddPlugin(findTask);
-        sensor->SetHitPlugin(fPluginCount);
-        // cout <<  "Adding Task CbmMvdSensorFindHitTask at Sensor " << sensor->GetName() << endl;
-*/
+        LOG(fatal) << "Should never come here. Tasks are now added in CbmMvdDigitizerTB class";
       }
 
       //Re-enable cluster and hit finder in addition to khun
       else if (plugin->ClassName() == clustername) {
-        CbmMvdSensorClusterfinderTask* clusterTask = new CbmMvdSensorClusterfinderTask();
-        sensor                                     = (CbmMvdSensor*) fSensorArray->At(i);
-        sensor->AddPlugin(clusterTask);
-        sensor->SetClusterPlugin(fPluginCount);
-        // cout <<  "Adding Task CbmMvdSensorClusterfinderTask at Sensor " << sensor->GetName() << endl;
+        LOG(fatal) << "Should never come here. Tasks are now added in CbmMvdClusterfinder class";
       }
       else if (plugin->ClassName() == hitname) {
-        CbmMvdSensorHitfinderTask* hitTask = new CbmMvdSensorHitfinderTask();
-        sensor                             = (CbmMvdSensor*) fSensorArray->At(i);
-        sensor->AddPlugin(hitTask);
-        sensor->SetHitPlugin(fPluginCount);
-        // cout <<  "Adding Task CbmMvdSensorHitfinderTask at Sensor " << sensor->GetName() << endl;
+        LOG(fatal) << "Should never come here. Tasks are now added in CbmMvdHitfinder class";
       }
       //end: re-enable cluster and hit finder in addition to khun
 
       else if (plugin->ClassName() == digitohitname) {
-        CbmMvdSensorDigiToHitTask* digitohitTask = new CbmMvdSensorDigiToHitTask();
-        sensor                                   = (CbmMvdSensor*) fSensorArray->At(i);
-        sensor->AddPlugin(digitohitTask);
-        sensor->SetHitPlugin(fPluginCount);
-        // cout <<  "Adding Task CbmMvdSensorClusterfinderTask at Sensor " << sensor->GetName() << endl;
+        LOG(fatal) << "Should never come here. Tasks are now added in CbmMvdDigiToHit class";
       }
       else {
         cout << endl << "task not included yet, adding standart task." << endl;
diff --git a/mvd/CbmMvdDigiToHit.cxx b/mvd/CbmMvdDigiToHit.cxx
index b40b9cd2c4a7cb81a7295e0f3d3972bdd307a711..955ca07e9d90b1d2184575afabe4e18eba8f585c 100644
--- a/mvd/CbmMvdDigiToHit.cxx
+++ b/mvd/CbmMvdDigiToHit.cxx
@@ -149,10 +149,21 @@ InitStatus CbmMvdDigiToHit::Init()
     LOG(fatal) << "Geometry couldn't be loaded from file. No MVD digitizer available.";
   }
 
-  CbmMvdSensorDigiToHitTask* hitTask = new CbmMvdSensorDigiToHitTask();
+  // Add the digitizer plugin to all sensors
+  std::map<int, CbmMvdSensor*>& sensorMap = fDetector->GetSensorMap();
+  UInt_t plugincount=fDetector->GetPluginCount();
 
-  fDetector->AddPlugin(hitTask);
+  for (auto itr = sensorMap.begin();
+              itr != sensorMap.end(); itr++) {
+    CbmMvdSensorDigiToHitTask* hitTask = new CbmMvdSensorDigiToHitTask();
+
+    itr->second->AddPlugin(hitTask);
+    itr->second->SetDigiPlugin(plugincount);
+  }
+  fDetector->SetSensorArrayFilled(kTRUE);
+  fDetector->SetPluginCount(plugincount+1);
   fHitPluginNr = (UInt_t)(fDetector->GetPluginArraySize());
+
   if (fShowDebugHistos) fDetector->ShowDebugHistos();
   fDetector->Init();
 
diff --git a/mvd/CbmMvdDigitizer.cxx b/mvd/CbmMvdDigitizer.cxx
index cbb8e4668b0b60f6c80777289a0c927a7e8e595b..bc2c46ffbebda2e6eb051b1df747e7d6aebbed7a 100644
--- a/mvd/CbmMvdDigitizer.cxx
+++ b/mvd/CbmMvdDigitizer.cxx
@@ -14,7 +14,7 @@
 #include "CbmMvdDigi.h"
 #include "CbmMvdPileupManager.h"
 #include "CbmMvdPoint.h"
-#include "SensorDataSheets/CbmMvdMimosa26AHR.h"
+//#include "SensorDataSheets/CbmMvdMimosa26AHR.h"
 #include "plugins/tasks/CbmMvdSensorDigitizerTask.h"
 #include "tools/CbmMvdGeoHandler.h"
 
diff --git a/mvd/CbmMvdDigitizerTB.cxx b/mvd/CbmMvdDigitizerTB.cxx
index 3c011806c4cb9b587f037542a7b7d659e90536d2..451ed9095d0b057e2a6d05f6a8560a2668c42eb2 100644
--- a/mvd/CbmMvdDigitizerTB.cxx
+++ b/mvd/CbmMvdDigitizerTB.cxx
@@ -138,10 +138,21 @@ InitStatus CbmMvdDigitizerTB::Init()
 
   fDetector = CbmMvdDetector::Instance();
 
-  CbmMvdSensorDigitizerTBTask* digiTask = new CbmMvdSensorDigitizerTBTask();
+  // Add the digitizer plugin to all sensors
+  std::map<int, CbmMvdSensor*>& sensorMap = fDetector->GetSensorMap();
+  UInt_t plugincount=fDetector->GetPluginCount();
 
-  fDetector->AddPlugin(digiTask);
+  for (auto itr = sensorMap.begin();
+              itr != sensorMap.end(); itr++) {
+    CbmMvdSensorDigitizerTBTask* digiTask = new CbmMvdSensorDigitizerTBTask();
+
+    itr->second->AddPlugin(digiTask);
+    itr->second->SetDigiPlugin(plugincount);
+  }
+  fDetector->SetSensorArrayFilled(kTRUE);
+  fDetector->SetPluginCount(plugincount+1);
   fDigiPluginNr = (UInt_t)(fDetector->GetPluginArraySize());
+
   fDetector->Init();
 
   // Screen output
diff --git a/mvd/CbmMvdHitfinder.cxx b/mvd/CbmMvdHitfinder.cxx
index 2664b764cd96ac2886f97933681b72c336edc3ee..00205b6033ff26ee9ab7666c48cb1b117e508848 100644
--- a/mvd/CbmMvdHitfinder.cxx
+++ b/mvd/CbmMvdHitfinder.cxx
@@ -203,19 +203,22 @@ InitStatus CbmMvdHitfinder::Init()
 
   fDetector = CbmMvdDetector::Instance();
 
-  //  if(!useClusterfinder)
-  //      {
-  //  	CbmMvdSensorFindHitTask* HitfinderTask = new CbmMvdSensorFindHitTask();
-  //      fDetector->AddPlugin(HitfinderTask);
-  //      }
-  //  else
-  //      {
-  CbmMvdSensorHitfinderTask* HitfinderTask = new CbmMvdSensorHitfinderTask();
-  fDetector->AddPlugin(HitfinderTask);
-  cout << endl << "running with external clusterfinder" << endl;
-  //       }
 
+  // Add the digitizer plugin to all sensors
+  std::map<int, CbmMvdSensor*>& sensorMap = fDetector->GetSensorMap();
+  UInt_t plugincount=fDetector->GetPluginCount();
+
+  for (auto itr = sensorMap.begin();
+              itr != sensorMap.end(); itr++) {
+    CbmMvdSensorHitfinderTask* hitfinderTask = new CbmMvdSensorHitfinderTask();
+
+    itr->second->AddPlugin(hitfinderTask);
+    itr->second->SetDigiPlugin(plugincount);
+  }
+  fDetector->SetSensorArrayFilled(kTRUE);
+  fDetector->SetPluginCount(plugincount+1);
   fHitfinderPluginNr = (UInt_t)(fDetector->GetPluginArraySize());
+
   if (fShowDebugHistos) fDetector->ShowDebugHistos();
   fDetector->Init();