diff --git a/Decay/Baryon/StrongHeavyBaryonDecayer.cc b/Decay/Baryon/StrongHeavyBaryonDecayer.cc
--- a/Decay/Baryon/StrongHeavyBaryonDecayer.cc
+++ b/Decay/Baryon/StrongHeavyBaryonDecayer.cc
@@ -1,685 +1,531 @@
 // -*- C++ -*-
 //
 // This is the implementation of the non-inlined, non-templated member
 // functions of the StrongHeavyBaryonDecayer class.
 //
 
 #include "StrongHeavyBaryonDecayer.h"
 #include "ThePEG/Utilities/DescribeClass.h"
 #include "ThePEG/PDT/DecayMode.h"
 #include "ThePEG/Interface/ClassDocumentation.h"
+#include "ThePEG/Interface/Deleted.h"
+#include "ThePEG/Interface/Command.h"
 #include "ThePEG/Interface/Parameter.h"
 #include "ThePEG/Interface/ParVector.h"
 #include "ThePEG/Persistency/PersistentOStream.h"
 #include "ThePEG/Persistency/PersistentIStream.h"
 
 using namespace Herwig;
 
 void StrongHeavyBaryonDecayer::doinitrun() {
   Baryon1MesonDecayerBase::doinitrun();
   if(initialize()) {
-    _maxweight.clear();
+    maxWeight_.clear();
     for(unsigned int ix=0;ix<numberModes();++ix) {
-      if(mode(ix)) _maxweight.push_back(mode(ix)->maxWeight());
-      else         _maxweight.push_back(1.);
+      if(mode(ix)) maxWeight_.push_back(mode(ix)->maxWeight());
+      else         maxWeight_.push_back(1.);
     }
   }
 }
 
 StrongHeavyBaryonDecayer::StrongHeavyBaryonDecayer() {
   // strong couplings of the baryons to pions
   // coupling of the sigma_c to lambda_c pi
   _gsigma_clambda_cpi = 8.88/GeV;
   // coupling of xi*_c to xi_c pi
   _gxistar_cxi_cpi    = 8.34/GeV;
   // strong coupling for lambda_c1 to sigma_c pi
   _flambda_c1sigma_cpi=0.52;
   // strong coupling for xi_c1 to xi_c'
   _fxi_c1xi_cpi = 0.36;
   // strong coupling for lambda_c1star to sigma_c pi
   _flambda_c1starsigma_cpi=21.5/GeV2;
   // strong coupling for xi_ci* to xi_c'
   _fxi_c1starxi_cpi = 20./GeV2;
   // coupling of the sigma_b to lambda_b pi
   _gsigma_blambda_bpi = 8.88/GeV;
   // coupling of xi*_b to xi_b pi
   _gxistar_bxi_bpi    = 8.34/GeV;
   // strong coupling for lambda_b1 to sigma_b pi
   _flambda_b1sigma_bpi=0.52;
   // strong coupling for xi_b1 to xi_b'
   _fxi_b1xi_bpi = 0.36;
   // strong coupling for lambda_b1star to sigma_b pi
   _flambda_b1starsigma_bpi=21.5/GeV2;
   // strong coupling for xi_bi* to xi_b'
   _fxi_b1starxi_bpi = 20./GeV2;
-  // the particles and maximum weights for the decay modes
-  // sigma_c to lambda_c pi
-  _incoming.push_back(4222);_outgoingB.push_back(4122);_outgoingM.push_back( 211);
-  _maxweight.push_back(2.5);_modetype.push_back(1);
-  _incoming.push_back(4212);_outgoingB.push_back(4122);_outgoingM.push_back( 111);
-  _maxweight.push_back(3.);_modetype.push_back(1);
-  _incoming.push_back(4112);_outgoingB.push_back(4122);_outgoingM.push_back(-211);
-  _maxweight.push_back(2.5);_modetype.push_back(1);
-  /*
-  // xi'_c to xi_c pi   
-  _incoming.push_back(4322);_outgoingB.push_back(4232);_outgoingM.push_back( 111);
-  _maxweight.push_back(1.);_modetype.push_back(1);
-  _incoming.push_back(4322);_outgoingB.push_back(4132);_outgoingM.push_back( 211);
-  _maxweight.push_back(1.);_modetype.push_back(1);
-  _incoming.push_back(4312);_outgoingB.push_back(4132);_outgoingM.push_back( 111);
-  _maxweight.push_back(1.);_modetype.push_back(1);
-  _incoming.push_back(4312);_outgoingB.push_back(4232);_outgoingM.push_back(-211);
-  _maxweight.push_back(1.);_modetype.push_back(1);
-  */
-  // sigma*_c to lambda_c pi
-  _incoming.push_back(4224);_outgoingB.push_back(4122);_outgoingM.push_back( 211);
-  _maxweight.push_back(2.5);_modetype.push_back(1);
-  _incoming.push_back(4214);_outgoingB.push_back(4122);_outgoingM.push_back( 111);
-  _maxweight.push_back(3.5);_modetype.push_back(1);
-  _incoming.push_back(4114);_outgoingB.push_back(4122);_outgoingM.push_back(-211);
-  _maxweight.push_back(3.5);_modetype.push_back(1);
-  // xi*_c to xi_c pi   
-  _incoming.push_back(4324);_outgoingB.push_back(4232);_outgoingM.push_back( 111);
-  _maxweight.push_back(2.);_modetype.push_back(1);
-  _incoming.push_back(4324);_outgoingB.push_back(4132);_outgoingM.push_back( 211);
-  _maxweight.push_back(2.);_modetype.push_back(1);
-  _incoming.push_back(4314);_outgoingB.push_back(4132);_outgoingM.push_back( 111);
-  _maxweight.push_back(2.);_modetype.push_back(1);
-  _incoming.push_back(4314);_outgoingB.push_back(4232);_outgoingM.push_back(-211);
-  _maxweight.push_back(2.);_modetype.push_back(1);
-  // lambda_c1 to sigma_c pi
-  _incoming.push_back(14122);_outgoingB.push_back(4222);_outgoingM.push_back(-211);
-  _maxweight.push_back(3.);_modetype.push_back(0);
-  _incoming.push_back(14122);_outgoingB.push_back(4212);_outgoingM.push_back( 111);
-  _maxweight.push_back(7.);_modetype.push_back(0);
-  _incoming.push_back(14122);_outgoingB.push_back(4112);_outgoingM.push_back( 211);
-  _maxweight.push_back(3.5);_modetype.push_back(0);
-  // lambda_c1* to sigma_c pi
-  _incoming.push_back( 4124);_outgoingB.push_back(4222);_outgoingM.push_back(-211);
-  _maxweight.push_back(0.2);_modetype.push_back(1);
-  _incoming.push_back( 4124);_outgoingB.push_back(4212);_outgoingM.push_back( 111);
-  _maxweight.push_back(0.2);_modetype.push_back(1);
-  _incoming.push_back( 4124);_outgoingB.push_back(4112);_outgoingM.push_back( 211);
-  _maxweight.push_back(0.2);_modetype.push_back(1);
-  // sigma_b to lambda_b pi
-  _incoming.push_back(5222);_outgoingB.push_back(5122);_outgoingM.push_back( 211);
-  _maxweight.push_back(2.5);_modetype.push_back(1);
-  _incoming.push_back(5212);_outgoingB.push_back(5122);_outgoingM.push_back( 111);
-  _maxweight.push_back(3.);_modetype.push_back(1);
-  _incoming.push_back(5112);_outgoingB.push_back(5122);_outgoingM.push_back(-211);
-  _maxweight.push_back(2.5);_modetype.push_back(1);
-  /*
-  // xi'_b to xi_b pi   
-  _incoming.push_back(5322);_outgoingB.push_back(5232);_outgoingM.push_back( 111);
-  _maxweight.push_back(1.);_modetype.push_back(1);
-  _incoming.push_back(5322);_outgoingB.push_back(5132);_outgoingM.push_back( 211);
-  _maxweight.push_back(1.);_modetype.push_back(1);
-  _incoming.push_back(5312);_outgoingB.push_back(5132);_outgoingM.push_back( 111);
-  _maxweight.push_back(1.);_modetype.push_back(1);
-  _incoming.push_back(5312);_outgoingB.push_back(5232);_outgoingM.push_back(-211);
-  _maxweight.push_back(1.);_modetype.push_back(1);
-  */
-  // sigma*_b to lambda_b pi
-  _incoming.push_back(5224);_outgoingB.push_back(5122);_outgoingM.push_back( 211);
-  _maxweight.push_back(2.5);_modetype.push_back(1);
-  _incoming.push_back(5214);_outgoingB.push_back(5122);_outgoingM.push_back( 111);
-  _maxweight.push_back(2.5);_modetype.push_back(1);
-  _incoming.push_back(5114);_outgoingB.push_back(5122);_outgoingM.push_back(-211);
-  _maxweight.push_back(2.5);_modetype.push_back(1);
-  // xi*_b to xi_b pi   
-  _incoming.push_back(5324);_outgoingB.push_back(5232);_outgoingM.push_back( 111);
-  _maxweight.push_back(3.);_modetype.push_back(1);
-  _incoming.push_back(5324);_outgoingB.push_back(5132);_outgoingM.push_back( 211);
-  _maxweight.push_back(2.);_modetype.push_back(1);
-  _incoming.push_back(5314);_outgoingB.push_back(5132);_outgoingM.push_back( 111);
-  _maxweight.push_back(2.);_modetype.push_back(1);
-  _incoming.push_back(5314);_outgoingB.push_back(5232);_outgoingM.push_back(-211);
-  _maxweight.push_back(2.5);_modetype.push_back(1);
-  // lambda_b1 to sigma_b pi
-  _incoming.push_back(15122);_outgoingB.push_back(5222);_outgoingM.push_back(-211);
-  _maxweight.push_back(2.6);_modetype.push_back(0);
-  _incoming.push_back(15122);_outgoingB.push_back(5212);_outgoingM.push_back( 111);
-  _maxweight.push_back(6.);_modetype.push_back(0);
-  _incoming.push_back(15122);_outgoingB.push_back(5112);_outgoingM.push_back( 211);
-  _maxweight.push_back(3.);_modetype.push_back(0);
-  // lambda_b1* to sigma_b pi
-  _incoming.push_back( 5124);_outgoingB.push_back(5222);_outgoingM.push_back(-211);
-  _maxweight.push_back(0.2);_modetype.push_back(2);
-  _incoming.push_back( 5124);_outgoingB.push_back(5212);_outgoingM.push_back( 111);
-  _maxweight.push_back(0.2);_modetype.push_back(2);
-  _incoming.push_back( 5124);_outgoingB.push_back(5112);_outgoingM.push_back( 211);
-  _maxweight.push_back(0.2);_modetype.push_back(2);
-  // xi_c1* to xi_c' pi
-  _incoming.push_back(14324);_outgoingB.push_back(4322);_outgoingM.push_back( 111);
-  _maxweight.push_back(2.);_modetype.push_back(2);  
-  _incoming.push_back(14324);_outgoingB.push_back(4312);_outgoingM.push_back( 211);
-  _maxweight.push_back(2.);_modetype.push_back(2);  
-  _incoming.push_back(14314);_outgoingB.push_back(4312);_outgoingM.push_back( 111);
-  _maxweight.push_back(2.);_modetype.push_back(2);  
-  _incoming.push_back(14314);_outgoingB.push_back(4322);_outgoingM.push_back(-211);
-  _maxweight.push_back(2.5);_modetype.push_back(2);
-  // xi_c1* to xi_c* pi
-  _incoming.push_back(14324);_outgoingB.push_back(4324);_outgoingM.push_back( 111);
-  _maxweight.push_back(2.5);_modetype.push_back(0);  
-  _incoming.push_back(14324);_outgoingB.push_back(4314);_outgoingM.push_back( 211);
-  _maxweight.push_back(2.5);_modetype.push_back(0);  
-  _incoming.push_back(14314);_outgoingB.push_back(4314);_outgoingM.push_back( 111);
-  _maxweight.push_back(2.8);_modetype.push_back(0);  
-  _incoming.push_back(14314);_outgoingB.push_back(4324);_outgoingM.push_back(-211);
-  _maxweight.push_back(2.5);_modetype.push_back(0);
-  // xi_c1 to xi_c' pi
-  _incoming.push_back(14322);_outgoingB.push_back(4322);_outgoingM.push_back( 111);
-  _maxweight.push_back(2.);_modetype.push_back(0);  
-  _incoming.push_back(14322);_outgoingB.push_back(4312);_outgoingM.push_back( 211);
-  _maxweight.push_back(2.);_modetype.push_back(0);  
-  _incoming.push_back(14312);_outgoingB.push_back(4312);_outgoingM.push_back( 111);
-  _maxweight.push_back(2.);_modetype.push_back(0);  
-  _incoming.push_back(14312);_outgoingB.push_back(4322);_outgoingM.push_back(-211);
-  _maxweight.push_back(2.);_modetype.push_back(0);
-  // xi_c1 to xi_c* pi
-  _incoming.push_back(14322);_outgoingB.push_back(4324);_outgoingM.push_back( 111);
-  _maxweight.push_back(0.02);_modetype.push_back(2);  
-  _incoming.push_back(14322);_outgoingB.push_back(4314);_outgoingM.push_back( 211);
-  _maxweight.push_back(0.02);_modetype.push_back(2);  
-  _incoming.push_back(14312);_outgoingB.push_back(4314);_outgoingM.push_back( 111);
-  _maxweight.push_back(0.02);_modetype.push_back(2);  
-  _incoming.push_back(14312);_outgoingB.push_back(4324);_outgoingM.push_back(-211);
-  _maxweight.push_back(0.02);_modetype.push_back(2);
-  // xi_b1* to xi_b' pi
-  _incoming.push_back(15324);_outgoingB.push_back(5322);_outgoingM.push_back( 111);
-  _maxweight.push_back(2.2);_modetype.push_back(2);  
-  _incoming.push_back(15324);_outgoingB.push_back(5312);_outgoingM.push_back( 211);
-  _maxweight.push_back(2.2);_modetype.push_back(2);  
-  _incoming.push_back(15314);_outgoingB.push_back(5312);_outgoingM.push_back( 111);
-  _maxweight.push_back(2.2);_modetype.push_back(2);  
-  _incoming.push_back(15314);_outgoingB.push_back(5322);_outgoingM.push_back(-211);
-  _maxweight.push_back(2.2);_modetype.push_back(2);
-  // xi_b1* to xi_b* pi
-  _incoming.push_back(15324);_outgoingB.push_back(5324);_outgoingM.push_back( 111);
-  _maxweight.push_back(2.5);_modetype.push_back(0);  
-  _incoming.push_back(15324);_outgoingB.push_back(5314);_outgoingM.push_back( 211);
-  _maxweight.push_back(2.5);_modetype.push_back(0);  
-  _incoming.push_back(15314);_outgoingB.push_back(5314);_outgoingM.push_back( 111);
-  _maxweight.push_back(3.0);_modetype.push_back(0);  
-  _incoming.push_back(15314);_outgoingB.push_back(5324);_outgoingM.push_back(-211);
-  _maxweight.push_back(2.5);_modetype.push_back(0);
-  // xi_b1 to xi_b' pi
-  _incoming.push_back(15322);_outgoingB.push_back(5322);_outgoingM.push_back( 111);
-  _maxweight.push_back(2.);_modetype.push_back(0);  
-  _incoming.push_back(15322);_outgoingB.push_back(5312);_outgoingM.push_back( 211);
-  _maxweight.push_back(2.);_modetype.push_back(0);  
-  _incoming.push_back(15312);_outgoingB.push_back(5312);_outgoingM.push_back( 111);
-  _maxweight.push_back(2.);_modetype.push_back(0);  
-  _incoming.push_back(15312);_outgoingB.push_back(5322);_outgoingM.push_back(-211);
-  _maxweight.push_back(2.);_modetype.push_back(0);
-  // xi_b1 to xi_b* pi
-  _incoming.push_back(15322);_outgoingB.push_back(5324);_outgoingM.push_back( 111);
-  _maxweight.push_back(0.01);_modetype.push_back(2);  
-  _incoming.push_back(15322);_outgoingB.push_back(5314);_outgoingM.push_back( 211);
-  _maxweight.push_back(0.01);_modetype.push_back(2);  
-  _incoming.push_back(15312);_outgoingB.push_back(5314);_outgoingM.push_back( 111);
-  _maxweight.push_back(0.01);_modetype.push_back(2);  
-  _incoming.push_back(15312);_outgoingB.push_back(5324);_outgoingM.push_back(-211);
-  _maxweight.push_back(0.01);_modetype.push_back(2);
-  // initial size of the vectors
-  _initsize=_incoming.size();
   // intermediates
   generateIntermediates(false);
 }
 
 void StrongHeavyBaryonDecayer::doinit() {
   Baryon1MesonDecayerBase::doinit();
-  unsigned int isize(_incoming.size());
-  if(isize!=_outgoingB.size()||isize!=_outgoingM.size()||isize!=_maxweight.size())
+  unsigned int isize(incoming_.size());
+  if(isize!=outgoing_.size()||isize!=maxWeight_.size())
     throw InitException() << "Inconsistent parameters in StrongHeavyBaryonDecayer"
 			  << "::doinit()" << Exception::abortnow;
   // add the various decay modes
   double or2(1./sqrt(2.)),or3(1./sqrt(3.)),or6(1./sqrt(6.));
   // the decay modes
-  for(unsigned int ix=0;ix<_incoming.size();++ix) {
-    tPDPtr    in  =  getParticleData(_incoming[ix]);
-    tPDVector out = {getParticleData(_outgoingB[ix]),
-    		     getParticleData(_outgoingM[ix])};
+  for(unsigned int ix=0;ix<incoming_.size();++ix) {
+    tPDPtr    in  =  getParticleData(incoming_[ix]);
+    tPDVector out = {getParticleData(outgoing_[ix].first),
+    		     getParticleData(outgoing_[ix].second)};
     PhaseSpaceModePtr mode;
     if(in&&out[0]&&out[1]) {
-      mode = new_ptr(PhaseSpaceMode(in,out,_maxweight[ix]));
+      mode = new_ptr(PhaseSpaceMode(in,out,maxWeight_[ix]));
     }
     else {
       mode = PhaseSpaceModePtr();
     }
     addMode(mode);
-    if(_outgoingB[ix]==4122&&((_incoming[ix]==4222&&_outgoingM[ix]==211)||
-			      (_incoming[ix]==4212&&_outgoingM[ix]==111)||
-			      (_incoming[ix]==4112&&_outgoingM[ix]==-211)))
+    if(outgoing_[ix].first==4122&&((incoming_[ix]==4222&&outgoing_[ix].second==211)||
+			      (incoming_[ix]==4212&&outgoing_[ix].second==111)||
+			      (incoming_[ix]==4112&&outgoing_[ix].second==-211)))
       _prefactor.push_back(-_gsigma_clambda_cpi*GeV*or3);
-    else if((_incoming[ix]==4322&&((_outgoingB[ix]==4232&&_outgoingM[ix]==111)||
-				   (_outgoingB[ix]==4132&&_outgoingM[ix]==211)))||
-	    (_incoming[ix]==4312&&((_outgoingB[ix]==4132&&_outgoingM[ix]==111)||
-				   (_outgoingB[ix]==4232&&_outgoingM[ix]==-211))))
-      _prefactor.push_back(_outgoingM[ix]==111 ? 
+    else if((incoming_[ix]==4322&&((outgoing_[ix].first==4232&&outgoing_[ix].second==111)||
+				   (outgoing_[ix].first==4132&&outgoing_[ix].second==211)))||
+	    (incoming_[ix]==4312&&((outgoing_[ix].first==4132&&outgoing_[ix].second==111)||
+				   (outgoing_[ix].first==4232&&outgoing_[ix].second==-211))))
+      _prefactor.push_back(outgoing_[ix].second==111 ? 
 			   0.5*_gxistar_cxi_cpi*GeV*or3 :
 			   _gxistar_cxi_cpi*GeV*or6);
-    else if(_outgoingB[ix]==4122&&((_incoming[ix]==4224&&_outgoingM[ix]== 211)||
-				   (_incoming[ix]==4214&&_outgoingM[ix]== 111)||
-				   (_incoming[ix]==4114&&_outgoingM[ix]==-211)))
+    else if(outgoing_[ix].first==4122&&((incoming_[ix]==4224&&outgoing_[ix].second== 211)||
+				   (incoming_[ix]==4214&&outgoing_[ix].second== 111)||
+				   (incoming_[ix]==4114&&outgoing_[ix].second==-211)))
       _prefactor.push_back(_gsigma_clambda_cpi*GeV);
-    else if((_incoming[ix]==4324&&((_outgoingB[ix]==4232&&_outgoingM[ix]==111)||
-				   (_outgoingB[ix]==4132&&_outgoingM[ix]==211)))||
-	    (_incoming[ix]==4314&&((_outgoingB[ix]==4132&&_outgoingM[ix]==111)||
-				   (_outgoingB[ix]==4232&&_outgoingM[ix]==-211))))
-      _prefactor.push_back(_outgoingM[ix]==111 ? 0.5*_gxistar_cxi_cpi*GeV :
+    else if((incoming_[ix]==4324&&((outgoing_[ix].first==4232&&outgoing_[ix].second==111)||
+				   (outgoing_[ix].first==4132&&outgoing_[ix].second==211)))||
+	    (incoming_[ix]==4314&&((outgoing_[ix].first==4132&&outgoing_[ix].second==111)||
+				   (outgoing_[ix].first==4232&&outgoing_[ix].second==-211))))
+      _prefactor.push_back(outgoing_[ix].second==111 ? 0.5*_gxistar_cxi_cpi*GeV :
 			   _gxistar_cxi_cpi*or2*GeV);
-    else if(_incoming[ix]==101242&&((_outgoingB[ix]==4222&&_outgoingM[ix]==-211)||
-				    (_outgoingB[ix]==4212&&_outgoingM[ix]== 111)||
-				    (_outgoingB[ix]==4112&&_outgoingM[ix]== 211)))
+    else if(incoming_[ix]==101242&&((outgoing_[ix].first==4222&&outgoing_[ix].second==-211)||
+				    (outgoing_[ix].first==4212&&outgoing_[ix].second== 111)||
+				    (outgoing_[ix].first==4112&&outgoing_[ix].second== 211)))
       _prefactor.push_back(_flambda_c1sigma_cpi);
-    else if(_incoming[ix]==101244&&((_outgoingB[ix]==4222&&_outgoingM[ix]==-211)||
-				    (_outgoingB[ix]==4212&&_outgoingM[ix]== 111)||
-				    (_outgoingB[ix]==4112&&_outgoingM[ix]== 211)))
+    else if(incoming_[ix]==101244&&((outgoing_[ix].first==4222&&outgoing_[ix].second==-211)||
+				    (outgoing_[ix].first==4212&&outgoing_[ix].second== 111)||
+				    (outgoing_[ix].first==4112&&outgoing_[ix].second== 211)))
       _prefactor.push_back(_flambda_c1starsigma_cpi*or3*GeV2);
-    else if((_incoming[ix]==102344&&((_outgoingB[ix]==4322&&_outgoingM[ix]== 111)||
-				     (_outgoingB[ix]==4312&&_outgoingM[ix]== 211)))||
-	    (_incoming[ix]==101344&&((_outgoingB[ix]==4312&&_outgoingM[ix]== 111)||
-				     (_outgoingB[ix]==4322&&_outgoingM[ix]==-211))))
-      _prefactor.push_back(_outgoingM[ix]==111 ? 
+    else if((incoming_[ix]==102344&&((outgoing_[ix].first==4322&&outgoing_[ix].second== 111)||
+				     (outgoing_[ix].first==4312&&outgoing_[ix].second== 211)))||
+	    (incoming_[ix]==101344&&((outgoing_[ix].first==4312&&outgoing_[ix].second== 111)||
+				     (outgoing_[ix].first==4322&&outgoing_[ix].second==-211))))
+      _prefactor.push_back(outgoing_[ix].second==111 ? 
 			   _fxi_c1starxi_cpi*0.5*or6*GeV2 :
 			   _fxi_c1starxi_cpi*0.5*or3*GeV2);
-    else if((_incoming[ix]==102344&&((_outgoingB[ix]==4324&&_outgoingM[ix]== 111)||
-				     (_outgoingB[ix]==4314&&_outgoingM[ix]== 211)))||
-	    (_incoming[ix]==101344&&((_outgoingB[ix]==4314&&_outgoingM[ix]== 111)||
-				     (_outgoingB[ix]==4324&&_outgoingM[ix]==-211))))
-      _prefactor.push_back(_outgoingM[ix]==111 ? 
+    else if((incoming_[ix]==102344&&((outgoing_[ix].first==4324&&outgoing_[ix].second== 111)||
+				     (outgoing_[ix].first==4314&&outgoing_[ix].second== 211)))||
+	    (incoming_[ix]==101344&&((outgoing_[ix].first==4314&&outgoing_[ix].second== 111)||
+				     (outgoing_[ix].first==4324&&outgoing_[ix].second==-211))))
+      _prefactor.push_back(outgoing_[ix].second==111 ? 
 			   _fxi_c1xi_cpi*0.5*or2 :
 			   _fxi_c1xi_cpi*0.5);
-    else if((_incoming[ix]==102342&&((_outgoingB[ix]==4322&&_outgoingM[ix]== 111)||
-				    (_outgoingB[ix]==4312&&_outgoingM[ix]== 211)))||
-	    (_incoming[ix]==101342&&((_outgoingB[ix]==4312&&_outgoingM[ix]== 111)||
-				    (_outgoingB[ix]==4322&&_outgoingM[ix]==-211))))
-      _prefactor.push_back(_outgoingM[ix]==111 ? _fxi_c1xi_cpi*0.5*or2 :
+    else if((incoming_[ix]==102342&&((outgoing_[ix].first==4322&&outgoing_[ix].second== 111)||
+				    (outgoing_[ix].first==4312&&outgoing_[ix].second== 211)))||
+	    (incoming_[ix]==101342&&((outgoing_[ix].first==4312&&outgoing_[ix].second== 111)||
+				    (outgoing_[ix].first==4322&&outgoing_[ix].second==-211))))
+      _prefactor.push_back(outgoing_[ix].second==111 ? _fxi_c1xi_cpi*0.5*or2 :
 			   _fxi_c1xi_cpi*0.5);
-    else if((_incoming[ix]==102342&&((_outgoingB[ix]==4324&&_outgoingM[ix]== 111)||
-				    (_outgoingB[ix]==4314&&_outgoingM[ix]== 211)))||
-	    (_incoming[ix]==101342&&((_outgoingB[ix]==4314&&_outgoingM[ix]== 111)||
-				    (_outgoingB[ix]==4324&&_outgoingM[ix]==-211))))
-      _prefactor.push_back(_outgoingM[ix]==111 ? 
+    else if((incoming_[ix]==102342&&((outgoing_[ix].first==4324&&outgoing_[ix].second== 111)||
+				    (outgoing_[ix].first==4314&&outgoing_[ix].second== 211)))||
+	    (incoming_[ix]==101342&&((outgoing_[ix].first==4314&&outgoing_[ix].second== 111)||
+				    (outgoing_[ix].first==4324&&outgoing_[ix].second==-211))))
+      _prefactor.push_back(outgoing_[ix].second==111 ? 
 			   _fxi_c1starxi_cpi*0.5*or6*GeV2 :
 			   _fxi_c1starxi_cpi*0.5*or3*GeV2);
-    else if(_outgoingB[ix]==5122&&((_incoming[ix]==5222&&_outgoingM[ix]==211)||
-				   (_incoming[ix]==5212&&_outgoingM[ix]==111)||
-				   (_incoming[ix]==5112&&_outgoingM[ix]==-211)))
+    else if(outgoing_[ix].first==5122&&((incoming_[ix]==5222&&outgoing_[ix].second==211)||
+				   (incoming_[ix]==5212&&outgoing_[ix].second==111)||
+				   (incoming_[ix]==5112&&outgoing_[ix].second==-211)))
       _prefactor.push_back(_gsigma_blambda_bpi*GeV*or3);
-    else if((_incoming[ix]==5322&&((_outgoingB[ix]==5232&&_outgoingM[ix]==111)||
-				   (_outgoingB[ix]==5132&&_outgoingM[ix]==211)))||
-	    (_incoming[ix]==5312&&((_outgoingB[ix]==5132&&_outgoingM[ix]==111)||
-				   (_outgoingB[ix]==5232&&_outgoingM[ix]==-211))))
-      _prefactor.push_back(_outgoingM[ix]==111 ? 
+    else if((incoming_[ix]==5322&&((outgoing_[ix].first==5232&&outgoing_[ix].second==111)||
+				   (outgoing_[ix].first==5132&&outgoing_[ix].second==211)))||
+	    (incoming_[ix]==5312&&((outgoing_[ix].first==5132&&outgoing_[ix].second==111)||
+				   (outgoing_[ix].first==5232&&outgoing_[ix].second==-211))))
+      _prefactor.push_back(outgoing_[ix].second==111 ? 
 			   0.5*_gxistar_bxi_bpi*GeV*or3 : 
 			   _gxistar_bxi_bpi*GeV*or6);
-    else if(_outgoingB[ix]==5122&&((_incoming[ix]==5224&&_outgoingM[ix]== 211)||
-				   (_incoming[ix]==5214&&_outgoingM[ix]== 111)||
-				   (_incoming[ix]==5114&&_outgoingM[ix]==-211)))
+    else if(outgoing_[ix].first==5122&&((incoming_[ix]==5224&&outgoing_[ix].second== 211)||
+				   (incoming_[ix]==5214&&outgoing_[ix].second== 111)||
+				   (incoming_[ix]==5114&&outgoing_[ix].second==-211)))
       _prefactor.push_back(-_gsigma_blambda_bpi*GeV);
-    else if((_incoming[ix]==5324&&((_outgoingB[ix]==5232&&_outgoingM[ix]==111)||
-				   (_outgoingB[ix]==5132&&_outgoingM[ix]==211)))||
-	    (_incoming[ix]==5314&&((_outgoingB[ix]==5132&&_outgoingM[ix]==111)||
-				   (_outgoingB[ix]==5232&&_outgoingM[ix]==-211))))
-      _prefactor.push_back(_outgoingM[ix]==111 ? 
+    else if((incoming_[ix]==5324&&((outgoing_[ix].first==5232&&outgoing_[ix].second==111)||
+				   (outgoing_[ix].first==5132&&outgoing_[ix].second==211)))||
+	    (incoming_[ix]==5314&&((outgoing_[ix].first==5132&&outgoing_[ix].second==111)||
+				   (outgoing_[ix].first==5232&&outgoing_[ix].second==-211))))
+      _prefactor.push_back(outgoing_[ix].second==111 ? 
 			   -0.5*_gxistar_bxi_bpi*GeV : 
 			   _gxistar_bxi_bpi*or2*GeV);
-    else if(_incoming[ix]==101252&&((_outgoingB[ix]==5222&&_outgoingM[ix]==-211)||
-				    (_outgoingB[ix]==5212&&_outgoingM[ix]== 111)||
-				    (_outgoingB[ix]==5112&&_outgoingM[ix]== 211)))
+    else if(incoming_[ix]==101252&&((outgoing_[ix].first==5222&&outgoing_[ix].second==-211)||
+				    (outgoing_[ix].first==5212&&outgoing_[ix].second== 111)||
+				    (outgoing_[ix].first==5112&&outgoing_[ix].second== 211)))
       _prefactor.push_back(_flambda_b1sigma_bpi);
-    else if(_incoming[ix]==101254&&((_outgoingB[ix]==5222&&_outgoingM[ix]==-211)||
-				    (_outgoingB[ix]==5212&&_outgoingM[ix]== 111)||
-				    (_outgoingB[ix]==5112&&_outgoingM[ix]== 211)))
+    else if(incoming_[ix]==101254&&((outgoing_[ix].first==5222&&outgoing_[ix].second==-211)||
+				    (outgoing_[ix].first==5212&&outgoing_[ix].second== 111)||
+				    (outgoing_[ix].first==5112&&outgoing_[ix].second== 211)))
       _prefactor.push_back(_flambda_b1starsigma_bpi*or3*GeV*GeV);
-    else if((_incoming[ix]==102354&&((_outgoingB[ix]==5322&&_outgoingM[ix]== 111)||
-				     (_outgoingB[ix]==5312&&_outgoingM[ix]== 211)))||
-	    (_incoming[ix]==101354&&((_outgoingB[ix]==5312&&_outgoingM[ix]== 111)||
-				     (_outgoingB[ix]==5322&&_outgoingM[ix]==-211))))
-      _prefactor.push_back(_outgoingM[ix]==111 ? 
+    else if((incoming_[ix]==102354&&((outgoing_[ix].first==5322&&outgoing_[ix].second== 111)||
+				     (outgoing_[ix].first==5312&&outgoing_[ix].second== 211)))||
+	    (incoming_[ix]==101354&&((outgoing_[ix].first==5312&&outgoing_[ix].second== 111)||
+				     (outgoing_[ix].first==5322&&outgoing_[ix].second==-211))))
+      _prefactor.push_back(outgoing_[ix].second==111 ? 
 			   _fxi_b1starxi_bpi*0.5*or6*GeV2 :
 			   _fxi_b1starxi_bpi*0.5*or3*GeV2);
-    else if((_incoming[ix]==102354&&((_outgoingB[ix]==5324&&_outgoingM[ix]== 111)||
-				    (_outgoingB[ix]==5314&&_outgoingM[ix]== 211)))||
-	    (_incoming[ix]==101354&&((_outgoingB[ix]==5314&&_outgoingM[ix]== 111)||
-				    (_outgoingB[ix]==5324&&_outgoingM[ix]==-211))))
-      _prefactor.push_back(_outgoingM[ix]==111 ? _fxi_b1xi_bpi*0.5*or2 :
+    else if((incoming_[ix]==102354&&((outgoing_[ix].first==5324&&outgoing_[ix].second== 111)||
+				    (outgoing_[ix].first==5314&&outgoing_[ix].second== 211)))||
+	    (incoming_[ix]==101354&&((outgoing_[ix].first==5314&&outgoing_[ix].second== 111)||
+				    (outgoing_[ix].first==5324&&outgoing_[ix].second==-211))))
+      _prefactor.push_back(outgoing_[ix].second==111 ? _fxi_b1xi_bpi*0.5*or2 :
 			   _fxi_b1xi_bpi*0.5);
-    else if((_incoming[ix]==102352&&((_outgoingB[ix]==5322&&_outgoingM[ix]== 111)||
-				     (_outgoingB[ix]==5312&&_outgoingM[ix]== 211)))||
-	    (_incoming[ix]==101352&&((_outgoingB[ix]==5312&&_outgoingM[ix]== 111)||
-				     (_outgoingB[ix]==5322&&_outgoingM[ix]==-211))))
-      _prefactor.push_back(_outgoingM[ix]==111 ? 
+    else if((incoming_[ix]==102352&&((outgoing_[ix].first==5322&&outgoing_[ix].second== 111)||
+				     (outgoing_[ix].first==5312&&outgoing_[ix].second== 211)))||
+	    (incoming_[ix]==101352&&((outgoing_[ix].first==5312&&outgoing_[ix].second== 111)||
+				     (outgoing_[ix].first==5322&&outgoing_[ix].second==-211))))
+      _prefactor.push_back(outgoing_[ix].second==111 ? 
 			   _fxi_b1xi_bpi*0.5*or2 : _fxi_b1xi_bpi*0.5);
-    else if((_incoming[ix]==102352&&((_outgoingB[ix]==5324&&_outgoingM[ix]== 111)||
-				     (_outgoingB[ix]==5314&&_outgoingM[ix]== 211)))||
-	    (_incoming[ix]==101352&&((_outgoingB[ix]==5314&&_outgoingM[ix]== 111)||
-				     (_outgoingB[ix]==5324&&_outgoingM[ix]==-211))))
-      _prefactor.push_back(_outgoingM[ix]==111 ? 
+    else if((incoming_[ix]==102352&&((outgoing_[ix].first==5324&&outgoing_[ix].second== 111)||
+				     (outgoing_[ix].first==5314&&outgoing_[ix].second== 211)))||
+	    (incoming_[ix]==101352&&((outgoing_[ix].first==5314&&outgoing_[ix].second== 111)||
+				     (outgoing_[ix].first==5324&&outgoing_[ix].second==-211))))
+      _prefactor.push_back(outgoing_[ix].second==111 ? 
 			   _fxi_b1starxi_bpi*0.5*or6*GeV2 :
 			   _fxi_b1starxi_bpi*0.5*or3*GeV2);
     else
       throw InitException() << "Unknown mode in StrongHeavyBaryonDecayer::doinit()"
 			    << Exception::abortnow;
   }
 }
 
 void StrongHeavyBaryonDecayer::persistentOutput(PersistentOStream & os) const {
   os << ounit(_gsigma_clambda_cpi,1./GeV) << ounit(_gxistar_cxi_cpi,1./GeV) 
      << _flambda_c1sigma_cpi << _fxi_c1xi_cpi << ounit(_flambda_c1starsigma_cpi,1./GeV2) 
      << ounit(_fxi_c1starxi_cpi,1./GeV2) << ounit(_gsigma_blambda_bpi,1./GeV) 
      << ounit(_gxistar_bxi_bpi,1./GeV) << _flambda_b1sigma_bpi 
      << _fxi_b1xi_bpi << ounit(_flambda_b1starsigma_bpi,1./GeV2) 
      << ounit(_fxi_b1starxi_bpi,1./GeV2) 
-     << _incoming << _outgoingB << _outgoingM << _maxweight << _prefactor << _modetype;
+     << incoming_ << outgoing_ << maxWeight_ << _prefactor << modeType_;
 }
 
 void StrongHeavyBaryonDecayer::persistentInput(PersistentIStream & is, int) {
   is >> iunit(_gsigma_clambda_cpi,1./GeV) >> iunit(_gxistar_cxi_cpi,1./GeV) 
      >> _flambda_c1sigma_cpi >> _fxi_c1xi_cpi >> iunit(_flambda_c1starsigma_cpi,1./GeV2) 
      >> iunit(_fxi_c1starxi_cpi,1./GeV2) >> iunit(_gsigma_blambda_bpi,1./GeV) 
      >> iunit(_gxistar_bxi_bpi,1./GeV) >> _flambda_b1sigma_bpi 
      >> _fxi_b1xi_bpi >> iunit(_flambda_b1starsigma_bpi,1./GeV2) 
      >> iunit(_fxi_b1starxi_bpi,1./GeV2) 
-     >> _incoming >> _outgoingB >> _outgoingM >> _maxweight >> _prefactor >> _modetype;
+     >> incoming_ >> outgoing_ >> maxWeight_ >> _prefactor >> modeType_;
 }
 
 int StrongHeavyBaryonDecayer::modeNumber(bool & cc,tcPDPtr parent,
 					  const tPDVector & children) const {
   int imode(-1);
   if(children.size()!=2){return imode;}
   // ids of the particles
   int id0(parent->id());
   int id1(children[0]->id());
   int id2(children[1]->id());
   unsigned int ix(0);
   cc =false;
   do {
-    if(id0==_incoming[ix]) {
-      if((id1==_outgoingB[ix]&&id2==_outgoingM[ix])||
-	 (id2==_outgoingB[ix]&&id1==_outgoingM[ix])) {
+    if(id0==incoming_[ix]) {
+      if((id1==outgoing_[ix].first&&id2==outgoing_[ix].second)||
+	 (id2==outgoing_[ix].first&&id1==outgoing_[ix].second)) {
 	imode=ix;
 	cc=false;
       }
     }
-    else if(id0==-_incoming[ix]) {
-      if((id1==-_outgoingB[ix]&&id2==-_outgoingM[ix])||
-	 (id2==-_outgoingB[ix]&&id1==-_outgoingM[ix])) {
+    else if(id0==-incoming_[ix]) {
+      if((id1==-outgoing_[ix].first&&id2==-outgoing_[ix].second)||
+	 (id2==-outgoing_[ix].first&&id1==-outgoing_[ix].second)) {
 	imode=ix;
 	cc=true;
       }
-      if(((id1==-_outgoingB[ix]&&id2==_outgoingM[ix])||
-	  (id2==-_outgoingB[ix]&&id1==_outgoingM[ix]))&&
-	 (_outgoingM[ix]==111||_outgoingM[ix]==221||_outgoingM[ix]==331||
-	  _outgoingM[ix]==223||_outgoingM[ix]==333)) {
+      if(((id1==-outgoing_[ix].first&&id2==outgoing_[ix].second)||
+	  (id2==-outgoing_[ix].first&&id1==outgoing_[ix].second))&&
+	 (outgoing_[ix].second==111||outgoing_[ix].second==221||outgoing_[ix].second==331||
+	  outgoing_[ix].second==223||outgoing_[ix].second==333)) {
 	imode=ix;
 	cc=true;
       }
     }
     ++ix;
   }
-  while(ix<_incoming.size()&&imode<0);
+  while(ix<incoming_.size()&&imode<0);
   return imode;
 }
 
 // The following static variable is needed for the type
 // description system in ThePEG.
 DescribeClass<StrongHeavyBaryonDecayer,Baryon1MesonDecayerBase>
 describeHerwigStrongHeavyBaryonDecayer("Herwig::StrongHeavyBaryonDecayer", "HwBaryonDecay.so");
 
 void StrongHeavyBaryonDecayer::Init() {
 
   static ClassDocumentation<StrongHeavyBaryonDecayer> documentation
     ("The StrongHeavyBaryonDecayer class performs the strong decays of"
      " baryons containing a heavy quark using the results of hep-ph/9904421.",
      "The strong decays of the heavy baryons were simulated using the results of"
      "\\cite{Ivanov:1999bk}.",
      "\\bibitem{Ivanov:1999bk}\n"
      "M.~A.~Ivanov, J.~G.~Korner, V.~E.~Lyubovitskij and A.~G.~Rusetsky,\n"
      "Phys.\\ Rev.\\  D {\\bf 60} (1999) 094002\n"
      "[arXiv:hep-ph/9904421].\n"
      "%%CITATION = PHRVA,D60,094002;%%\n");
 
   static Parameter<StrongHeavyBaryonDecayer,InvEnergy> interfacegSigma_cLambda_cPi
     ("gSigma_cLambda_cPi",
      "The coupling of the Sigma_c to Lambda_c pi",
      &StrongHeavyBaryonDecayer::_gsigma_clambda_cpi, 1./GeV, 8.8/GeV, ZERO, 20.0/GeV,
      false, false, true);
 
   static Parameter<StrongHeavyBaryonDecayer,InvEnergy> interfacegXiStar_cXi_cPi
     ("gXiStar_cXi_cPi",
      "The coupling of the Xi*_c to Xi_c pi",
      &StrongHeavyBaryonDecayer::_gxistar_cxi_cpi, 1./GeV, 8.34/GeV, ZERO, 20.0/GeV,
      false, false, true);
 
   static Parameter<StrongHeavyBaryonDecayer,double> interfacefLambda_c1Sigma_cPi
     ("fLambda_c1Sigma_cPi",
      "The coupling of the Lambda_c1 to Sigma_c pi",
      &StrongHeavyBaryonDecayer::_flambda_c1sigma_cpi, 0.52, 0, 10,
      false, false, false);
 
   static Parameter<StrongHeavyBaryonDecayer,double> interfacefXi_c1Xi_cPi
     ("fXi_c1Xi_cPi",
      "The coupling of the Xi_c1 to Xi_c pi",
      &StrongHeavyBaryonDecayer::_fxi_c1xi_cpi, 0.36, 0, 10,
      false, false, false);
 
   static Parameter<StrongHeavyBaryonDecayer,InvEnergy2> interfacefLambda_c1starSigma_cPi
     ("fLambda_c1*Sigma_cPi",
      "The coupling of Lambda_c1* to Sigma_c and pi",
      &StrongHeavyBaryonDecayer::_flambda_c1starsigma_cpi, 1./GeV2, 21.5/GeV2,
      ZERO, 100.0/GeV2,
      false, false, true);
 
   static Parameter<StrongHeavyBaryonDecayer,InvEnergy> interfacegSigma_bLambda_bPi
     ("gSigma_bLambda_bPi",
      "The coupling of the Sigma_b to Lambda_b pi",
      &StrongHeavyBaryonDecayer::_gsigma_blambda_bpi, 1./GeV, 8.8/GeV, ZERO, 20.0/GeV,
      false, false, true);
 
   static Parameter<StrongHeavyBaryonDecayer,InvEnergy2> interfacefXi_c1starXi_cPi
     ("fXi_c1*Xi_cPi",
      "The coupling of Xi_c1* to Xi_c and pi",
      &StrongHeavyBaryonDecayer::_fxi_c1starxi_cpi, 1./GeV2, 20./GeV2,
      ZERO, 100.0/GeV2,
      false, false, true);
 
   static Parameter<StrongHeavyBaryonDecayer,InvEnergy> interfacegXiStar_bXi_bPi
     ("gXiStar_bXi_bPi",
      "The coupling of the Xi*_b to Xi_b pi",
      &StrongHeavyBaryonDecayer::_gxistar_bxi_bpi, 1./GeV, 8.34/GeV, ZERO, 20.0/GeV,
      false, false, true);
 
   static Parameter<StrongHeavyBaryonDecayer,double> interfacefLambda_b1Sigma_bPi
     ("fLambda_b1Sigma_bPi",
      "The coupling of the Lambda_b1 to Sigma_b pi",
      &StrongHeavyBaryonDecayer::_flambda_b1sigma_bpi, 0.52, 0, 10,
      false, false, false);
 
   static Parameter<StrongHeavyBaryonDecayer,double> interfacefXi_b1Xi_bPi
     ("fXi_b1Xi_bPi",
      "The coupling of the Xi_b1 to Xi_b pi",
      &StrongHeavyBaryonDecayer::_fxi_b1xi_bpi, 0.36, 0, 10,
      false, false, false);
 
   static Parameter<StrongHeavyBaryonDecayer,InvEnergy2> interfacefLambda_b1starSigma_bPi
     ("fLambda_b1*Sigma_bPi",
      "The coupling of Lambda_b1* to Sigma_b and pi",
      &StrongHeavyBaryonDecayer::_flambda_b1starsigma_bpi, 1./GeV2, 21.5/GeV2,
      ZERO, 100.0/GeV2,
      false, false, true);
 
   static Parameter<StrongHeavyBaryonDecayer,InvEnergy2> interfacefXi_b1starXi_bPi
     ("fXi_b1*Xi_bPi",
      "The coupling of Xi_b1* to Xi_b and pi",
      &StrongHeavyBaryonDecayer::_fxi_b1starxi_bpi, 1./GeV2, 20./GeV2,
      ZERO, 100.0/GeV2,
      false, false, true);
 
-  static ParVector<StrongHeavyBaryonDecayer,int> interfaceIncoming
-    ("Incoming",
-     "The PDG code of the incoming baryon",
-     &StrongHeavyBaryonDecayer::_incoming, -1, 0, 0, 1000000,
-     false, false, true);
+  static Command<StrongHeavyBaryonDecayer> interfaceSetUpDecayMode
+    ("SetUpDecayMode",
+     "Set up the particles (incoming, outgoing scalars, coupling(MeV) and max weight for a decay",
+     &StrongHeavyBaryonDecayer::setUpDecayMode, false);
+  
+  static Deleted<StrongHeavyBaryonDecayer> interfaceIncoming
+    ("Incoming","The old methods of setting up a decay in StrongHeavyBaryonDecayer have been deleted, please use SetUpDecayMode");
 
-  static ParVector<StrongHeavyBaryonDecayer,int> interfaceOutgoingB
-    ("OutgoingB",
-     "The PDG code of the outgoing baryon",
-     &StrongHeavyBaryonDecayer::_outgoingB, -1, 0, 0, 1000000,
-     false, false, true);
+  static Deleted<StrongHeavyBaryonDecayer> interfaceOutgoingB
+    ("OutgoingB","The old methods of setting up a decay in StrongHeavyBaryonDecayer have been deleted, please use SetUpDecayMode");
 
-  static ParVector<StrongHeavyBaryonDecayer,int> interfaceOutgoingM
-    ("OutgoingM",
-     "The PDG code of the outgoing meson",
-     &StrongHeavyBaryonDecayer::_outgoingM, -1, 0, -1000000, 1000000,
-     false, false, true);
+  static Deleted<StrongHeavyBaryonDecayer> interfaceOutgoingM
+    ("OutgoingM","The old methods of setting up a decay in StrongHeavyBaryonDecayer have been deleted, please use SetUpDecayMode");
 
-  static ParVector<StrongHeavyBaryonDecayer,int> interfaceModeType
-    ("ModeType",
-     "The type of mode. 0 is s-wave, 1 is p-wave and 2 is d-wave",
-     &StrongHeavyBaryonDecayer::_modetype, -1, 0, 0, 2,
-     false, false, true);
+  static Deleted<StrongHeavyBaryonDecayer> interfaceModeType
+    ("ModeType","The old methods of setting up a decay in StrongHeavyBaryonDecayer have been deleted, please use SetUpDecayMode");
 
-  static ParVector<StrongHeavyBaryonDecayer,double> interfaceMaxWeight
-    ("MaxWeight",
-     "The maximum weight for the decay mode",
-     &StrongHeavyBaryonDecayer::_maxweight,
-     0, 0, 0, 0., 100., false, false, true);
+  static Deleted<StrongHeavyBaryonDecayer> interfaceMaxWeight
+    ("MaxWeight","The old methods of setting up a decay in StrongHeavyBaryonDecayer have been deleted, please use SetUpDecayMode");
 
 }
 
 // couplings for spin-1/2 to spin-1/2 spin-0
 void StrongHeavyBaryonDecayer::
 halfHalfScalarCoupling(int imode,Energy m0,Energy m1,Energy m2,
 		       Complex & A,Complex & B) const {
   useMe();
-  if(_modetype[imode]==0) {
+  if(modeType_[imode]==0) {
     A = _prefactor[imode];
     B = 0.;
   }
-  else if(_modetype[imode]==1) {
+  else if(modeType_[imode]==1) {
     A = 0.;
     B = 0.5*_prefactor[imode]*((m0+m1)*(m0+m1)-m2*m2)/m0/GeV;
   }
   else
     throw Exception() << "Unknown mode in  StrongHeavyBaryonDecayer::"
 				 << "halfHalfScalarCoupling() " 
 				 << Exception::abortnow;
 }
 
 // couplings for spin-1/2 to spin-3/2 spin-0
 void StrongHeavyBaryonDecayer::
 halfThreeHalfScalarCoupling(int imode, Energy m0, Energy m1, Energy m2,
 			    Complex& A,Complex& B) const {
   useMe();
-  if(_modetype[imode]==1) {
+  if(modeType_[imode]==1) {
     A = _prefactor[imode]*(m0+m1)/GeV;
     B = 0.;
   }
-  else if(_modetype[imode]==2) {
+  else if(modeType_[imode]==2) {
     A = 0.;
     B = 0.5*_prefactor[imode]*(m0+m1)*((m0+m1)*(m0+m1)-m2*m2)/m0/GeV2;
   }
   else {
     throw Exception() << "Unknown mode in  StrongHeavyBaryonDecayer::"
 				 << "halfThreeHalfScalarCoupling() " 
 				 << Exception::abortnow;
   }
 }
 
 // couplings for spin-3/2 to spin-3/2 spin-0
 void StrongHeavyBaryonDecayer::
 threeHalfThreeHalfScalarCoupling(int imode,Energy,Energy,Energy,
 				 Complex& A1,Complex& A2,Complex& B1,Complex& B2) const {
   useMe();
-  if(_modetype[imode]==0) {
+  if(modeType_[imode]==0) {
     A1 = _prefactor[imode];
     B1 = 0.;
     A2=0.;
     B2=0.;
   }
   else {
     throw Exception() << "Unknown mode in  StrongHeavyBaryonDecayer::"
 				 << "threeHalfThreeHalfScalarCoupling() " 
 				 << Exception::abortnow;
   }
 }
 
 // couplings for spin-3/2 to spin-1/2 spin-0
 void StrongHeavyBaryonDecayer::
 threeHalfHalfScalarCoupling(int imode,Energy m0,Energy m1,Energy m2,
 			    Complex& A,Complex& B) const {
   useMe();
-  if(_modetype[imode]==1) {
+  if(modeType_[imode]==1) {
     A = _prefactor[imode]*(m0+m1)/GeV;
     B = 0.;
   }
-  else if(_modetype[imode]==2) {
+  else if(modeType_[imode]==2) {
     A = 0.;
     B = 0.5*_prefactor[imode]*(m0+m1)*((m0+m1)*(m0+m1)-m2*m2)/m0/GeV2;
   }
   else {
     throw Exception() << "Unknown mode in  StrongHeavyBaryonDecayer::"
 				 << "threeHalfHalfScalarCoupling() " 
 				 << Exception::abortnow;
   }
 }
 
 void StrongHeavyBaryonDecayer::dataBaseOutput(ofstream & output,bool header) const {
   if(header) output << "update decayers set parameters=\"";
   Baryon1MesonDecayerBase::dataBaseOutput(output,false);
   output << "newdef " << name() << ":gSigma_cLambda_cPi " 
 	 << _gsigma_clambda_cpi*GeV << "\n";
   output << "newdef " << name() << ":gXiStar_cXi_cPi " 
 	 << _gxistar_cxi_cpi*GeV << "\n";
   output << "newdef " << name() << ":fLambda_c1Sigma_cPi " 
 	 << _flambda_c1sigma_cpi << "\n";
   output << "newdef " << name() << ":fXi_c1Xi_cPi " 
 	 << _fxi_c1xi_cpi << "\n";
   output << "newdef " << name() << ":fLambda_c1*Sigma_cPi " 
 	 << _flambda_c1starsigma_cpi*GeV2 << "\n";
   output << "newdef " << name() << ":fXi_c1*Xi_cPi " 
 	 << _fxi_c1starxi_cpi*GeV2 << "\n";
   output << "newdef " << name() << ":gSigma_bLambda_bPi " 
 	 << _gsigma_blambda_bpi*GeV << "\n";
   output << "newdef " << name() << ":gXiStar_bXi_bPi " 
 	 << _gxistar_bxi_bpi*GeV << "\n";
   output << "newdef " << name() << ":fLambda_b1Sigma_bPi " 
 	 << _flambda_b1sigma_bpi << "\n";
   output << "newdef " << name() << ":fXi_b1Xi_bPi " 
 	 << _fxi_b1xi_bpi << "\n";
   output << "newdef " << name() << ":fLambda_b1*Sigma_bPi " 
 	 << _flambda_b1starsigma_bpi*GeV2 << "\n";
   output << "newdef " << name() << ":fXi_b1*Xi_bPi " 
 	 << _fxi_b1starxi_bpi*GeV2 << "\n";
-  for(unsigned int ix=0;ix<_incoming.size();++ix) {
-    if(ix<_initsize) {
-      output << "newdef " << name() << ":Incoming " 
-	     << ix << " " << _incoming[ix] << "\n";
-      output << "newdef " << name() << ":OutgoingB " 
-	     << ix << " " << _outgoingB[ix] << "\n";
-      output << "newdef " << name() << ":OutgoingM " 
-	     << ix << " " << _outgoingM[ix] << "\n";
-      output << "newdef " << name() << ":ModeType " 
-	     << ix << " " << _modetype[ix] << "\n";
-      output << "newdef " << name() << ":MaxWeight " 
-	     << ix << " " << _maxweight[ix] << "\n";
-    }
-    else {
-      output << "insert " << name() << ":Incoming " 
-	     << ix << " " << _incoming[ix] << "\n";
-      output << "insert " << name() << ":OutgoingB " 
-	     << ix << " " << _outgoingB[ix] << "\n";
-      output << "insert " << name() << ":OutgoingM " 
-	     << ix << " " << _outgoingM[ix] << "\n";
-      output << "insert " << name() << ":ModeType " 
-	     << ix << " " << _modetype[ix] << "\n";
-      output << "insert " << name() << ":MaxWeight " 
-	     << ix << " " << _maxweight[ix] << "\n";
-    }
+  for(unsigned int ix=0;ix<incoming_.size();++ix) {
+    output << "do " << name() << ":SetUpDecayMode " << incoming_[ix] << " "
+	   << outgoing_[ix].first << " " << outgoing_[ix].second << " " << modeType_[ix]
+	   << " " << maxWeight_[ix] << "\n";
   }
   if(header) output << "\n\" where BINARY ThePEGName=\"" 
 		    << fullName() << "\";" << endl;
 }
+
+string StrongHeavyBaryonDecayer::setUpDecayMode(string arg) {
+  // parse first bit of the string
+  string stype = StringUtils::car(arg);
+  arg          = StringUtils::cdr(arg);
+  // extract PDG code for the incoming particle
+  long in = stoi(stype);
+  tcPDPtr pData = getParticleData(in);
+  if(!pData)
+    return "Incoming particle with id " + std::to_string(in) + "does not exist";
+  if(pData->iSpin()!=PDT::Spin1Half && pData->iSpin()!=PDT::Spin3Half)
+    return "Incoming particle with id " + std::to_string(in) + "does not have spin 1/2 or 3/2";
+  // and outgoing particles
+  stype = StringUtils::car(arg);
+  arg   = StringUtils::cdr(arg);
+  pair<long,long> out;
+  out.first = stoi(stype);
+  pData = getParticleData(out.first);
+  if(!pData)
+    return "First outgoing particle with id " + std::to_string(out.first) + "does not exist";
+  if(pData->iSpin()!=PDT::Spin1Half && pData->iSpin()!=PDT::Spin3Half)
+    return "First outgoing particle with id " + std::to_string(out.first) + "does not have spin 1/2 or 3/2";
+  stype = StringUtils::car(arg);
+  arg   = StringUtils::cdr(arg);
+  out.second = stoi(stype);
+  pData = getParticleData(out.second);
+  if(!pData)
+    return "Second outgoing particle with id " + std::to_string(out.second) + "does not exist";
+  if(pData->iSpin()!=PDT::Spin0)
+    return "Second outgoing particle with id " + std::to_string(out.second) + "does not have spin 0";
+  // get the type
+  stype = StringUtils::car(arg);
+  arg   = StringUtils::cdr(arg);
+  int itype = stoi(stype);
+  // and the maximum weight
+  stype = StringUtils::car(arg);
+  arg   = StringUtils::cdr(arg);
+  double wgt = stof(stype);
+  // store the information
+  incoming_.push_back(in);
+  outgoing_.push_back(out);
+  modeType_.push_back(itype);
+  maxWeight_.push_back(wgt);
+  // success
+  return "";
+}
diff --git a/Decay/Baryon/StrongHeavyBaryonDecayer.h b/Decay/Baryon/StrongHeavyBaryonDecayer.h
--- a/Decay/Baryon/StrongHeavyBaryonDecayer.h
+++ b/Decay/Baryon/StrongHeavyBaryonDecayer.h
@@ -1,273 +1,270 @@
 // -*- C++ -*-
 #ifndef HERWIG_StrongHeavyBaryonDecayer_H
 #define HERWIG_StrongHeavyBaryonDecayer_H
 // This is the declaration of the StrongHeavyBaryonDecayer class.
 
 #include "Baryon1MesonDecayerBase.h"
 
 namespace Herwig {
 using namespace ThePEG;
 
 /** \ingroup Decay
  *
  *  The <code>StrongHeavyBaryonDecayer</code> class implements the strong
  *  decays of charm baryons using the results of hep-ph/9904421.
  *
  * @see Baryon1MesonDecayerBase.
  * 
  */
 class StrongHeavyBaryonDecayer: public Baryon1MesonDecayerBase {
 
 public:
 
   /**
    * Default constructor.
    */
   StrongHeavyBaryonDecayer();
 
   /**
    * Which of the possible decays is required
    * @param cc Is this mode the charge conjugate
    * @param parent The decaying particle
    * @param children The decay products
    */
   virtual int modeNumber(bool & cc, tcPDPtr parent, 
 			 const tPDVector & children) const;
 
   /**
    * Output the setup information for the particle database
    * @param os The stream to output the information to
    * @param header Whether or not to output the information for MySQL
    */
   virtual void dataBaseOutput(ofstream & os,bool header) const;
 
 public:
 
   /** @name Functions used by the persistent I/O system. */
   //@{
   /**
    * Function used to write out object persistently.
    * @param os the persistent output stream written to.
    */
   void persistentOutput(PersistentOStream & os) const;
 
   /**
    * Function used to read in object persistently.
    * @param is the persistent input stream read from.
    * @param version the version number of the object when written.
    */
   void persistentInput(PersistentIStream & is, int version);
   //@}
 
   /**
    * Standard Init function used to initialize the interfaces.
    */
   static void Init();
 
 protected:
 
   /**
    *  Coupling Members.
    */
   //@{
   /**
    * Couplings for spin-\f$\frac12\f$ to spin-\f$\frac12\f$ and a scalar.
    * @param imode The mode
    * @param m0 The mass of the decaying particle.
    * @param m1 The mass of the outgoing baryon.
    * @param m2 The mass of the outgoing meson.
    * @param A The coupling \f$A\f$ described above.
    * @param B The coupling \f$B\f$ described above.
    */
   virtual void halfHalfScalarCoupling(int imode,Energy m0,Energy m1,Energy m2,
 				      Complex& A,Complex& B) const;
 
   /**
    * Couplings for spin-\f$\frac12\f$ to spin-\f$\frac32\f$ and a scalar.
    * This method must be implemented in any class inheriting from this one
    * which includes \f$\frac12\to\frac32+0\f$ or \f$\frac32\to\frac12+0\f$ decays. 
    * @param imode The mode
    * @param m0 The mass of the decaying particle.
    * @param m1 The mass of the outgoing baryon.
    * @param m2 The mass of the outgoing meson.
    * @param A The coupling \f$A\f$ described above.
    * @param B The coupling \f$B\f$ described above.
    */
   virtual void halfThreeHalfScalarCoupling(int imode, Energy m0, Energy m1, Energy m2,
 					   Complex& A,Complex& B) const;
 
   /**
    * Couplings for spin-\f$\frac12\f$ to spin-\f$\frac32\f$ and a scalar. 
    * @param imode The mode
    * @param m0 The mass of the decaying particle.
    * @param m1 The mass of the outgoing baryon.
    * @param m2 The mass of the outgoing meson.
    * @param A The coupling \f$A\f$ described above.
    * @param B The coupling \f$B\f$ described above.
    */
   virtual void threeHalfHalfScalarCoupling(int imode,Energy m0,Energy m1,Energy m2,
 					   Complex& A,Complex& B) const;
 
   /**
    * Couplings for spin-\f$\frac32\f$ to spin-\f$\frac32\f$ and a scalar.
    * This method must be implemented in any class inheriting from this one
    * which includes \f$\frac32\to\frac32+0\f$ decays. 
    * @param imode The mode
    * @param m0 The mass of the decaying particle.
    * @param m1 The mass of the outgoing baryon.
    * @param m2 The mass of the outgoing meson.
    * @param A1 The coupling \f$A_1\f$ described above.
    * @param A2 The coupling \f$A_2\f$ described above.
    * @param B1 The coupling \f$B_1\f$ described above.
    * @param B2 The coupling \f$B_2\f$ described above.
    */
   virtual void threeHalfThreeHalfScalarCoupling(int imode,Energy m0,Energy m1,Energy m2,
 						Complex& A1,Complex& A2,
 						Complex& B1,Complex& B2) const;
   //@}
 
 protected:
 
   /** @name Clone Methods. */
   //@{
   /**
    * Make a simple clone of this object.
    * @return a pointer to the new object.
    */
   virtual IBPtr clone() const {return new_ptr(*this);}
 
   /** Make a clone of this object, possibly modifying the cloned object
    * to make it sane.
    * @return a pointer to the new object.
    */
   virtual IBPtr fullclone() const {return new_ptr(*this);}
   //@}
 
 protected:
 
   /** @name Standard Interfaced functions. */
   //@{
 
   /**
    * Initialize this object after the setup phase before saving and
    * EventGenerator to disk.
    * @throws InitException if object could not be initialized properly.
    */
   virtual void doinit();
 
   /**
    * Initialize this object to the begining of the run phase.
    */
   virtual void doinitrun();
   //@}
 
 private:
 
   /**
    * Private and non-existent assignment operator.
    */
   StrongHeavyBaryonDecayer & operator=(const StrongHeavyBaryonDecayer &) = delete;
 
+public:
+
+  /**
+   *   Set the parameters for a decay mode
+   */
+  string setUpDecayMode(string arg);
+
 private:
 
   /**
    * Strong coupling for the \f$\Sigma_c\to\Lambda_c\pi\f$.
    */
   InvEnergy _gsigma_clambda_cpi;
 
   /**
    * strong coupling for \f$\Xi^*_c\to\Xi_c\pi\f$.
    */
   InvEnergy _gxistar_cxi_cpi;
 
   /**
    * Strong coupling for \f$\Lambda_{c1}\to\Sigma_c\pi\f$.
    */
   double _flambda_c1sigma_cpi;
 
   /**
    * Strong coupling for \f$\Xi_{c1}\to\Xi'_c\pi\f$.
    */
   double _fxi_c1xi_cpi;
 
   /**
    * Strong coupling for \f$\Lambda_{c1}^*\to\Sigma_c\pi\f$.
    */
   InvEnergy2 _flambda_c1starsigma_cpi;
 
   /**
    * Strong couplng for \f$\Xi_{c1}^*\to\Xi'_c\pi\f$.
    */
   InvEnergy2 _fxi_c1starxi_cpi;
 
   /**
    * Strong coupling for the \f$\Sigma_b\to\Lambda_b\pi\f$.
    */
   InvEnergy _gsigma_blambda_bpi;
 
   /**
    * Strong coupling for \f$\Xi^*_b \to \Xi_b \pi\f$.
    */
   InvEnergy _gxistar_bxi_bpi;
 
   /**
    * Strong coupling for \f$\Lambda_{b1} \to \Sigma_b \pi\f$.
    */
   double _flambda_b1sigma_bpi;
 
   /**
    * Strong coupling for \f$\Xi_{b1}\to\Xi'_b\pi\f$.
    */
   double _fxi_b1xi_bpi;
 
   /**
    * Strong coupling for \f$\Lambda_{b1}^* \to \Sigma_b \pi\f$.
    */
   InvEnergy2 _flambda_b1starsigma_bpi;
 
   /**
    * Strong couplng for \f$\Xi_{b1}^*\to\Xi'_b\pi\f$.
    */
   InvEnergy2 _fxi_b1starxi_bpi;
 
 
   /**
    * PDG code for the incoming baryons
    */
-  vector<int> _incoming;
+  vector<int> incoming_;
 
   /**
-   * PDG code for the outgoing baryons
+   * PDG code for the outgoing particles
    */
-  vector<int> _outgoingB;
-
-  /**
-   * PDG code for the outgoing mesons.
-   */
-  vector<int> _outgoingM;
+  vector<pair<int,int> > outgoing_;
 
   /**
    * max weight
    */
-  vector<double> _maxweight;
+  vector<double> maxWeight_;
 
   /**
    * The couplings for the different modes.
    */
   vector<double> _prefactor;
 
   /**
    * The type of matrix element
    */
-  vector<int> _modetype;
-
-  /**
-   *  The initial size of the arrays
-   */
-  unsigned int _initsize;
+  vector<int> modeType_;
 };
 
 }
 
 
 #endif /* HERWIG_StrongHeavyBaryonDecayer_H */