diff --git a/PwaUtils/AbsXdecAmp.cc b/PwaUtils/AbsXdecAmp.cc
index 5b8ad817c2b7d3fb9f81fe8b4bf596bfd09b13b4..361a79394e19dc2ed60f41d5d11886f0e5c169c9 100644
--- a/PwaUtils/AbsXdecAmp.cc
+++ b/PwaUtils/AbsXdecAmp.cc
@@ -137,7 +137,8 @@ void AbsXdecAmp::calcDynamics(EvtData* theData, AbsXdecAmp* grandmaAmp){
 
   if(!_absDyn->isLdependent()){
     theMutex.lock();
-    _cachedDynMap[std::this_thread::get_id()][_absDyn->grandMaKey(grandmaAmp)] = _absDyn->eval( theData, grandmaAmp);
+    //    _cachedDynMap[std::this_thread::get_id()][_absDyn->grandMaKey(grandmaAmp)] = _absDyn->eval( theData, grandmaAmp);
+    _cachedDynIdMap[std::this_thread::get_id()][_absDyn->grandMaId(grandmaAmp)] = _absDyn->eval( theData, grandmaAmp);
     theMutex.unlock();
   }
   if(!_daughter1IsStable) _decAmpDaughter1->calcDynamics(theData, this);
diff --git a/PwaUtils/AbsXdecAmp.hh b/PwaUtils/AbsXdecAmp.hh
index 4b77870332f57ff6b5074ff10ea7f9871cd78f1a..923d3a3f98317e4b1a524554c4d7bae7d57284c7 100644
--- a/PwaUtils/AbsXdecAmp.hh
+++ b/PwaUtils/AbsXdecAmp.hh
@@ -45,7 +45,7 @@
 class AbsDecay;
 //class AbsDynamics;
 
-typedef CacheVector<std::map<std::string,std::map<Id2StringType, complex<float> > > >  intStringShortComplFloatMap;
+//typedef CacheVector<std::map<std::string,std::map<Id2StringType, complex<float> > > >  intStringShortComplFloatMap;
 typedef CacheVector<std::map<unsigned short, std::map<Id2StringType, complex<float> > > >  intUShortId2StringComplFloatMap;
 
 class AbsXdecAmp : public AbsParamHandler{
@@ -104,9 +104,8 @@ protected:
   Spin _lam2Min;
   Spin _lam2Max;
 
-  // intStringShortComplFloatMap _cachedAmpMap;
   intUShortId2StringComplFloatMap _cachedAmpIdMap;
-  std::map<std::thread::id, std::map<std::string, complex<float> > > _cachedDynMap;
+  std::map<std::thread::id, std::map<unsigned short, complex<float> > > _cachedDynIdMap;
 
 
 
diff --git a/PwaUtils/HeliDecAmps.cc b/PwaUtils/HeliDecAmps.cc
index ee1e946581a204f0a7bcb77c446a576c8be0f442..8684f0a566a8aa288f53634da6fda6851659349e 100644
--- a/PwaUtils/HeliDecAmps.cc
+++ b/PwaUtils/HeliDecAmps.cc
@@ -260,7 +260,8 @@ complex<double> HeliDecAmps::XdecAmp(Spin& lamX, EvtData* theData, Spin& lamFs,
   //  result*=_preFactor*_isospinCG*sqrt(2.*_JPCPtr->J+1.);
 
   if (_absDyn->isLdependent()) result*=_cachedDynLMap.at(std::this_thread::get_id());
-  else result*=_cachedDynMap.at(std::this_thread::get_id()).at(_absDyn->grandMaKey(grandmaAmp));
+  //  else result*=_cachedDynMap.at(std::this_thread::get_id()).at(_absDyn->grandMaKey(grandmaAmp));
+  else result*=_cachedDynIdMap.at(std::this_thread::get_id()).at(_absDyn->grandMaId(grandmaAmp));
 
   if(result.real()!=result.real()){
     Alert << "result:\t" << result << endmsg;
diff --git a/PwaUtils/LSDecAmps.cc b/PwaUtils/LSDecAmps.cc
index 24c1a7b17e6cc5539a39b1aea4f82ec9587b9d91..ab92ebea42a173c090ade812d6c51c879fadc189 100644
--- a/PwaUtils/LSDecAmps.cc
+++ b/PwaUtils/LSDecAmps.cc
@@ -173,7 +173,8 @@ complex<double> LSDecAmps::lsLoop(AbsXdecAmp* grandmaAmp, Spin& lamX, EvtData* t
       result+=amp;    
     }
   }
-  if (!_absDyn->isLdependent()) result *=_cachedDynMap.at(std::this_thread::get_id()).at(_absDyn->grandMaKey(grandmaAmp));
+  //  if (!_absDyn->isLdependent()) result *=_cachedDynMap.at(std::this_thread::get_id()).at(_absDyn->grandMaKey(grandmaAmp));
+  if (!_absDyn->isLdependent()) result *=_cachedDynIdMap.at(std::this_thread::get_id()).at(_absDyn->grandMaId(grandmaAmp));
   return result;
 }
 
diff --git a/PwaUtils/TensorDecAmps.cc b/PwaUtils/TensorDecAmps.cc
index e73b66373f9319dc0b40c8ac3c9ac8352cde8a6a..8cb20982183b8951c8b992817c668b189e1805fd 100644
--- a/PwaUtils/TensorDecAmps.cc
+++ b/PwaUtils/TensorDecAmps.cc
@@ -140,7 +140,8 @@ complex<double> TensorDecAmps::lsLoop(AbsXdecAmp* grandmaAmp, Spin lamX, EvtData
     result+=tmpResult;
   }
   
-  if (!_absDyn->isLdependent()) result *=_cachedDynMap.at(std::this_thread::get_id()).at(_absDyn->grandMaKey(grandmaAmp));
+  //if (!_absDyn->isLdependent()) result *=_cachedDynMap.at(std::this_thread::get_id()).at(_absDyn->grandMaKey(grandmaAmp));
+  if (!_absDyn->isLdependent()) result *=_cachedDynIdMap.at(std::this_thread::get_id()).at(_absDyn->grandMaId(grandmaAmp));
   
   result*=_isospinCG;
   return result;