diff --git a/core/detectors/mvd/CbmMvdDetector.cxx b/core/detectors/mvd/CbmMvdDetector.cxx
index b99d53ee6b35ba6c2a780e0a643ee8751968e723..c4cea769a7b8f8488df2dbafab7951a48cabd44b 100644
--- a/core/detectors/mvd/CbmMvdDetector.cxx
+++ b/core/detectors/mvd/CbmMvdDetector.cxx
@@ -311,17 +311,6 @@ void CbmMvdDetector::ShowDebugHistos()
 }
 //-----------------------------------------------------------------------
 
-//-----------------------------------------------------------------------
-void CbmMvdDetector::SetProduceNoise()
-{
-  Int_t nSensors = fSensorArray->GetEntriesFast();
-  CbmMvdSensor* sensor;
-
-  for (Int_t j = 0; j < nSensors; j++) {
-    sensor = (CbmMvdSensor*) fSensorArray->At(j);
-    sensor->SetProduceNoise();
-  }
-}
 //-----------------------------------------------------------------------
 void CbmMvdDetector::SendInputToSensorPlugin(Int_t detectorid, Int_t nPlugin, TObject* input)
 {
diff --git a/core/detectors/mvd/CbmMvdDetector.h b/core/detectors/mvd/CbmMvdDetector.h
index 7e4dc3fb57f193511533da33ad5e9fc0068ff4f7..89fc571f1667f89c6f80cfcf6d192d5ac3c551e0 100644
--- a/core/detectors/mvd/CbmMvdDetector.h
+++ b/core/detectors/mvd/CbmMvdDetector.h
@@ -115,8 +115,6 @@ public:
   CbmMvdSensor* GetSensor(UInt_t nSensor) { return (CbmMvdSensor*) fSensorArray->At(nSensor); };
   void PrintParameter() { fParameter->Print(); };
 
-  void SetProduceNoise();
-
   static void SetSensorTyp(CbmMvdSensorTyp typ) { fSensorTyp = typ; };
 
   void SetSensorArrayFilled(Bool_t value = kTRUE) {fSensorArrayFilled=value;}
diff --git a/core/detectors/mvd/CbmMvdSensor.cxx b/core/detectors/mvd/CbmMvdSensor.cxx
index ae0f732ffc279ee89d20514832d295cf5f3e1354..bd06febbc9371d17c57b7ad75c1210af95844d7e 100644
--- a/core/detectors/mvd/CbmMvdSensor.cxx
+++ b/core/detectors/mvd/CbmMvdSensor.cxx
@@ -11,18 +11,8 @@
 
 //---Plugins
 #include "CbmMvdSensorPlugin.h"
-#include "CbmMvdSensorTask.h"
 #include "CbmMvdSensorBuffer.h"
-//#include "plugins/buffers/CbmMvdSensorFrameBuffer.h" // -> Not used
-//#include "plugins/buffers/CbmMvdSensorTrackingBuffer.h" // -> Not used
-//#include "plugins/tasks/CbmMvdSensorClusterfinderTask.h"  //not needed 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"  //not needed khun
-//---Plugins
+#include "plugins/tasks/CbmMvdSensorTask.h"
 
 /// includes from ROOT
 #include "TGeoManager.h"
@@ -281,33 +271,6 @@ void CbmMvdSensor::ShowDebugHistos()
 }
 // -------------------------------------------------------------------------
 
-// -------------------------------------------------------------------------
-void CbmMvdSensor::SetProduceNoise()
-{
-  CbmMvdSensorPlugin* pluginFirst;
-  // CbmMvdSensorFrameBuffer* framebuffer;
-  CbmMvdSensorDigitizerTask* digitask;
-
-  pluginFirst = (CbmMvdSensorPlugin*) fPluginArray->At(0);
-  if (pluginFirst->GetPluginType() == buffer) { return; }
-  else if (pluginFirst->GetPluginType() == task) {
-    TString digitizername = "CbmMvdSensorDigitizerTask";
-
-    if (pluginFirst->ClassName() == digitizername) {
-      digitask = (CbmMvdSensorDigitizerTask*) fPluginArray->At(0);
-      digitask->SetProduceNoise();
-    }
-
-    else {
-      LOG(fatal) << "Invalid input typ";
-    }
-  }
-  else {
-    cout << endl << "ERROR!! undefind plugin!" << endl;
-  }
-}
-// -------------------------------------------------------------------------
-
 // -------------------------------------------------------------------------
 
 void CbmMvdSensor::SendInputToPlugin(Int_t nPlugin, TObject* input)
@@ -317,9 +280,6 @@ void CbmMvdSensor::SendInputToPlugin(Int_t nPlugin, TObject* input)
   digitask->SetInput(input);
 }
 
-
-
-
 // -------------------------------------------------------------------------
 
 void CbmMvdSensor::ExecChain()
@@ -448,20 +408,20 @@ TClonesArray* CbmMvdSensor::GetOutputArray(Int_t nPlugin) const
 
   if (nPlugin == fHitPlugin) GetOutputBuffer();
   else if (nPlugin == fDigiPlugin) {
-    CbmMvdSensorDigitizerTask* digiplugin = (CbmMvdSensorDigitizerTask*) fPluginArray->At(nPlugin);
-    Int_t ArrayLength                     = digiplugin->GetOutputArray()->GetEntriesFast() - 1;
+    CbmMvdSensorTask* plugin = static_cast<CbmMvdSensorTask*>(fPluginArray->At(nPlugin));
+    Int_t ArrayLength = plugin->GetOutputArray()->GetEntriesFast() - 1;
     if (ArrayLength >= 0) {
-      foutputDigis->AbsorbObjects(digiplugin->GetOutputArray());
-      foutputDigiMatch->AbsorbObjects(digiplugin->GetMatchArray());
+      foutputDigis->AbsorbObjects(plugin->GetOutputArray());
+      foutputDigiMatch->AbsorbObjects(plugin->GetMatchArray());
       //cout << endl << "got digis " << foutputDigis->GetEntriesFast() << " and matches " << foutputDigiMatch->GetEntriesFast() << endl;
     }
     return (foutputDigis);
   }
   else if (nPlugin == fClusterPlugin)  //khun not needed
   {
-    CbmMvdSensorClusterfinderTask* clusterplugin = (CbmMvdSensorClusterfinderTask*) fPluginArray->At(nPlugin);
-    Int_t ArrayLength                            = clusterplugin->GetOutputArray()->GetEntriesFast() - 1;
-    if (ArrayLength >= 0) foutputCluster->AbsorbObjects(clusterplugin->GetOutputArray(), 0, ArrayLength);
+    CbmMvdSensorTask* plugin = static_cast<CbmMvdSensorTask*>(fPluginArray->At(nPlugin));
+    Int_t ArrayLength                            = plugin->GetOutputArray()->GetEntriesFast() - 1;
+    if (ArrayLength >= 0) foutputCluster->AbsorbObjects(plugin->GetOutputArray(), 0, ArrayLength);
     return (foutputCluster);
   }
   else {
diff --git a/core/detectors/mvd/CbmMvdSensor.h b/core/detectors/mvd/CbmMvdSensor.h
index 37ab20480ce6fae541296f8d36a07085fcbd889c..244e55788ed6e7a1e9b766773eb90e2a96c48ffd 100644
--- a/core/detectors/mvd/CbmMvdSensor.h
+++ b/core/detectors/mvd/CbmMvdSensor.h
@@ -142,9 +142,6 @@ public:
   //TClonesArray* GetOutputMatch() const;
   Int_t GetOutputArrayLen(Int_t nPlugin) const;
 
-  void SetProduceNoise();
-
-
 protected:
   Int_t fStationNr;   // Station identifier
   Int_t fSensorNr;    // Sensor identifier
diff --git a/sim/detectors/mvd/CbmMvdDigitizer.cxx b/sim/detectors/mvd/CbmMvdDigitizer.cxx
index 66a9bfc4c603400e5710cfa4016b6dbfdd58a2fd..a73f88411c0f29d003589279607c0cfa12532e9d 100644
--- a/sim/detectors/mvd/CbmMvdDigitizer.cxx
+++ b/sim/detectors/mvd/CbmMvdDigitizer.cxx
@@ -316,6 +316,7 @@ InitStatus CbmMvdDigitizer::Init()
   for (auto itr = sensorMap.begin();
               itr != sensorMap.end(); itr++) {
     CbmMvdSensorDigitizerTask* digiTask = new CbmMvdSensorDigitizerTask();
+    if (fNoiseSensors) digiTask->SetProduceNoise();
     itr->second->AddPlugin(digiTask);
     itr->second->SetDigiPlugin(plugincount);
   }