diff --git a/Hadronization/DarkHadronSpectrum.h b/Hadronization/DarkHadronSpectrum.h
--- a/Hadronization/DarkHadronSpectrum.h
+++ b/Hadronization/DarkHadronSpectrum.h
@@ -1,380 +1,372 @@
 // -*- C++ -*-
 #ifndef Herwig_DarkHadronSpectrum_H
 #define Herwig_DarkHadronSpectrum_H
 //
 // This is the declaration of the DarkHadronSpectrum class.
 //
 
 #include "Herwig/Hadronization/HadronSpectrum.h"
 #include <ThePEG/PDT/ParticleData.h>
 #include <ThePEG/PDT/StandardMatchers.h>
 #include <ThePEG/Repository/EventGenerator.h>
 #include <ThePEG/PDT/EnumParticles.h>
 #include "ThePEG/Repository/CurrentGenerator.h"
 
 namespace Herwig {
 
 using namespace ThePEG;
 
 /**
  * Here is the documentation of the DarkHadronSpectrum class.
  *
  * @see \ref DarkHadronSpectrumInterfaces "The interfaces"
  * defined for DarkHadronSpectrum.
  */
 class DarkHadronSpectrum: public HadronSpectrum {
 
 public:
 
   /** @name Standard constructors and destructors. */
   //@{
   /**
    * The default constructor.
    */
   DarkHadronSpectrum(unsigned int opt);
 
   /**
    * The destructor.
    */
   virtual ~DarkHadronSpectrum();
   //@}
 
 public:
 
   /** @name Partonic content */
   //@{
 
   /**
    * Return the id of the gluon
    */
   virtual long gluonId() const { return ParticleID::darkg; }
 
   /**
    * Return the ids of all hadronizing quarks
    */
   virtual const vector<long>& hadronizingQuarks() const {
     static vector<long> hadronizing = lightHadronizingQuarks();
     static vector<long> heavy = heavyHadronizingQuarks();
     hadronizing.insert(hadronizing.end(), heavy.begin(), heavy.end());
     return hadronizing;
   }
 
   /**
    * The light hadronizing quarks
    */
   virtual const vector<long>& lightHadronizingQuarks() const {
     if (long(_lightquarks.size()) != _nlightquarks) {
       for (long il=0; il<_nlightquarks; il++) {
         _lightquarks.push_back(il+_DarkHadOffset+1);
       }
     }
     return _lightquarks;
   }
 
   /**
-   * The light hadronizing diquarks
-   */
-  virtual const vector<long>& lightHadronizingDiquarks() const {
-    static vector<long> empty;
-    return empty;
-  }
-
-  /**
    * The heavy hadronizing quarks
    */
   virtual const vector<long>& heavyHadronizingQuarks() const {
     if (long(_heavyquarks.size()) != _nheavyquarks) {
       for (long il=0; il<_nheavyquarks; il++) {
         _heavyquarks.push_back(il+_DarkHadOffset+1+_nlightquarks);
       }
     }
     return _heavyquarks;
   }
 
   /**
    * The lightest quarks, used for finding the lightest Hadron Pair
    */
   virtual const vector<long>& lightestQuarks() const {
     // May need to be updated in future for strange-like quarks
     return lightHadronizingQuarks();
   }
 
 
   /**
    * Return true if any of the possible three input particles contains
    * the indicated heavy quark.  false otherwise. In the case that
    * only the first particle is specified, it can be: an (anti-)quark,
    * an (anti-)diquark an (anti-)meson, an (anti-)baryon; in the other
    * cases, each pointer is assumed to be either (anti-)quark or
    * (anti-)diquark.
    */
   virtual bool hasHeavy(long, tcPDPtr, tcPDPtr = PDPtr(), tcPDPtr = PDPtr()) const {
     //ToDo: this should work for the heavyHadronizingQuarks
     return false;
   }
 
   //@}
 
   /**
    * Return the threshold for a cluster to split into a pair of hadrons.
    * This is normally the mass of the lightest hadron Pair, but can be
    * higher for heavy and exotic clusters
    */
   virtual Energy hadronPairThreshold(tcPDPtr par1, tcPDPtr par2) const;
 
   /**
    * Return the weight for the given flavour
    */
   virtual double pwtQuark(const long& id) const {
     return pwt(id);
   }
 
   /**
    * Dummy function as it will not be needed
    */
 	virtual const vector<long>& lightHadronizingDiquarks() const {
 		static vector<long> nothing;
 		return nothing;
 	};
   /**
    * The diquark weight.
    */
    double pwtDIquark() const {
     return _pwtDIquark;
   }
 
 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);
   //@}
 
   /**
    * The standard Init function used to initialize the interfaces.
    * Called exactly once for each class by the class description system
    * before the main function starts or
    * when this class is dynamically loaded.
    */
   static void Init();
 
 protected:
 
   /** @name Standard Interfaced functions. */
   //@{
   /**
    * Initialize this object after the setup phase before saving an
    * EventGenerator to disk.
    *
    *  The array _repwt is initialized using the interfaces to set different
    *  weights for different meson multiplets and the constructHadronTable()
    *  method called to complete the construction of the hadron tables.
    *
    * @throws InitException if object could not be initialized properly.
    */
   virtual void doinit();
   //@}
 
   
   /**
    * Return the id of the diquark (anti-diquark) made by the two 
    * quarks (antiquarks) of id specified in input (id1, id2).
    * Caller must ensure that id1 and id2 are quarks.
    */
   long makeDiquarkID(long id1, long id2, long pspin)  const;
   
   /**
    *  Weights for mesons
    */
   virtual double mesonWeight(long id) const;
 
   /**
    * Return true, if any of the possible input particle pointer is an exotic quark, e.g. Susy quark;
    * false otherwise.   
    */
   bool isExotic(tcPDPtr par1, tcPDPtr par2 = PDPtr(), tcPDPtr par3 = PDPtr())  const;
 
 protected:
 
   /**
    *  Construct the table of hadron data
    *  This is the main method to initialize the hadron data (mainly the
    *  weights associated to each hadron, taking into account its spin, 
    *  eventual isoscalar-octect mixing, singlet-decuplet factor). This is
    *  the method that one should update when new or updated hadron data is
    *  available. 
    *
    *  This class implements the construction of the basic table but can be 
    *  overridden if needed in inheriting classes.
    *
    *  The rationale for factors used for diquarks involving different quarks can 
    *  be can be explained by taking a prototype example that in the  exact SU(2) limit,
    *  in which:
    *  \f[m_u=m_d\f] 
    *  \f[M_p=M_n=M_\Delta\f]
    *      and we will have equal numbers of u and d quarks produced.
    *      Suppose that we weight 1 the diquarks made of the same 
    *      quark and 1/2 those made of different quarks, the fractions
    *      of u and d baryons (p, n, Delta) we get are the following:
    *        - \f$\Delta^{++}\f$: 1 possibility only  u uu  with weight 1
    *        - \f$\Delta^-   \f$: 1 possibility only  d dd  with weight 1
    *        - \f$p,\Delta^+ \f$: 2 possibilities     u ud  with weight 1/2
    *                                                 d uu  with weight 1
    *        - \f$n,\Delta^0 \f$: 2 possibilities     d ud  with weight 1/2
    *                                                 u dd  with weight 1
    *      In the latter two cases, we have to take into account the 
    *      fact that  p  and  n  have spin 1/2 whereas  Delta+  and  Delta0
    *      have spin 3/2 therefore from phase space we get a double weight 
    *      for  Delta+  and  Delta0  relative to  p  and  n  respectively.
    *      Therefore the relative amount of these baryons that is
    *      produced is the following:
    *       # p = # n = ( 1/2 + 1 ) * 1/3 = 1/2
    *       # Delta++ = # Delta- = 1 = ( 1/2 + 1) * 2/3 # Delta+ = # Delta0
    *      which is correct, and therefore the weight 1/2 for the
    *      diquarks of different types of quarks is justified (at least
    *      in this limit of exact SU(2) ).
    */
   virtual void constructHadronTable();
 
   /**
    *  Access the parton weights
    */
    double pwt(long pid) const {
     map<long,double>::const_iterator it = _pwt.find(abs(pid));
     assert( it != _pwt.end() );
     return it->second;
   }
 
   /**
    *   Insert a meson in the table
    */
   virtual void insertMeson(HadronInfo a, int flav1, int flav2);
 
   /**
    * Methods for the mixing of \f$I=0\f$ mesons
    */
   //@{
   /**
    * Return the probability of mixing for Octet-Singlet isoscalar mixing,
    * the probability of the 
    * \f$\frac1{\sqrt{2}}(|u\bar{u}\rangle + |d\bar{d}\rangle)\f$ component
    * is returned.
    * @param angleMix The mixing angle in degrees (not radians)
    * @param order is 0 for no mixing, 1 for the first resonance of a pair,
    *                 2 for the second one.
    * The mixing is defined so that for example with \f$\eta-\eta'\f$ mixing where
    * the mixing angle is \f$\theta=-23^0$ with $\eta\f$ as the first particle
    * and \f$\eta'\f$ the second one.
    * The convention used is 
    * \f[\eta  = \cos\theta|\eta_{\rm octet  }\rangle
    *           -\sin\theta|\eta_{\rm singlet}\rangle\f]
    * \f[\eta' = \sin\theta|\eta_{\rm octet  }\rangle
    *           -\cos\theta|\eta_{\rm singlet}\rangle\f]
    * with 
    * \f[|\eta_{\rm singlet}\rangle = \frac1{\sqrt{3}}
    * \left[|u\bar{u}\rangle + |d\bar{d}\rangle +  |s\bar{s}\rangle\right]\f]
    * \f[|\eta_{\rm octet  }\rangle = \frac1{\sqrt{6}}
    * \left[|u\bar{u}\rangle + |d\bar{d}\rangle - 2|s\bar{s}\rangle\right]\f]
    */
    double probabilityMixing(const double angleMix,
 				  const int order) const {
     static double convert=Constants::pi/180.0;
     if (order == 1)      
       return sqr( cos( angleMix*convert + atan( sqrt(2.0) ) ) );
     else if (order == 2) 
       return sqr( sin( angleMix*convert + atan( sqrt(2.0) ) ) );
     else                 
       return 1.;
   }
 
   /**
    * Returns the weight of given mixing state.
    * @param id The PDG code of the meson
    */
   virtual double mixingStateWeight(long id) const; 
   //@}
 
   virtual double specialQuarkWeight(double quarkWeight, long,
 				    const Energy, tcPDPtr, tcPDPtr) const {
       return quarkWeight;
   }
 
   /**
    * The probability of producting a diquark.
    */
   double _pwtDIquark;
 
   /**
    * Singlet and Decuplet weights
    */
   //@{
   /**
    *  The singlet weight
    */
   double _sngWt; 
 
   /**
    *  The decuplet weight
    */
   double _decWt; 
   //@}
 
   /**
    * Return true if the two or three particles in input can be the components 
    * of a baryon; false otherwise.
    */
   virtual bool canBeBaryon(tcPDPtr par1, tcPDPtr par2 , tcPDPtr par3 = PDPtr())  const;
 
 private:
   /**
    *  Option for the construction of the tables
    */ 
   unsigned int _topt;
 
   /**
    *  Which particles to produce for debugging purposes
    */
   unsigned int _trial;
 
   /**
    *  Prefix for Dark Hadron pdgID
    */
   int _DarkHadOffset = 4900000;
 
   /**
    *  The number of light quarks
    */
   int _nlightquarks;
 
   /**
    *  The number of heavy quarks
    */
   int _nheavyquarks;
 
 
   /**
    *  The pdgIds of the light quarks
    */
   mutable vector<long> _lightquarks = {};
 
   /**
    *  The pdgIds of the heavy quarks
    */
   mutable vector<long> _heavyquarks = {};
 
 };
 
 }
 
 #endif /* Herwig_DarkHadronSpectrum_H */