diff --git a/Models/StandardModel/O2AlphaS.cc b/Models/StandardModel/O2AlphaS.cc
--- a/Models/StandardModel/O2AlphaS.cc
+++ b/Models/StandardModel/O2AlphaS.cc
@@ -1,170 +1,170 @@
 // -*- C++ -*-
 //
 // O2AlphaS.cc is a part of Herwig - A multi-purpose Monte Carlo event generator
 // Copyright (C) 2002-2011 The Herwig Collaboration
 //
 // Herwig is licenced under version 2 of the GPL, see COPYING for details.
 // Please respect the MCnet academic guidelines, see GUIDELINES for details.
 //
 //
 // This is the implementation of the non-inlined, non-templated member
 // functions of the O2AlphaS class.
 //
 
 #include "O2AlphaS.h"
 #include "ThePEG/StandardModel/StandardModelBase.h"
 #include "ThePEG/Repository/EventGenerator.h"
 #include "ThePEG/PDT/ParticleData.h"
 #include "ThePEG/Interface/Parameter.h"
 #include "ThePEG/Interface/Switch.h"
 #include "ThePEG/Interface/ClassDocumentation.h"
 #include "ThePEG/Persistency/PersistentOStream.h"
 #include "ThePEG/Persistency/PersistentIStream.h"
 
 using namespace Herwig;
 
 void O2AlphaS::persistentOutput(PersistentOStream & os) const {
   os << ounit(_lambdaQCD,GeV) << _bcoeff << _ccoeff << ounit(_lambdas,GeV) 
      << ounit(_threshold,GeV) << _match << _copt;
 }
 
 void O2AlphaS::persistentInput(PersistentIStream & is, int) {
   is >> iunit(_lambdaQCD,GeV) >> _bcoeff >> _ccoeff >> iunit(_lambdas,GeV) 
      >> iunit(_threshold,GeV) >> _match >> _copt;
 }
 
 ClassDescription<O2AlphaS> O2AlphaS::initO2AlphaS;
 // Definition of the static class description member.
 
 void O2AlphaS::Init() {
 
   static ClassDocumentation<O2AlphaS> documentation
     ("The O2AlphaS class implements the next-to-leading order alphaS in the same"
      " way as in FORTRAN HERWIG");
 
   static Parameter<O2AlphaS,Energy> interfaceLambdaQCD
     ("LambdaQCD",
      "The value of Lambda QCD",
      &O2AlphaS::_lambdaQCD, MeV, 180.*MeV, 50.*MeV, 500.0*MeV,
      false, false, Interface::limited);
 
 
   static Switch<O2AlphaS,unsigned int> interfaceLambdaType
     ("LambdaType",
      "Which type of Lambda to use",
      &O2AlphaS::_copt, 0, false, false);
   static SwitchOption interfaceLambdaTypeMonteCarlo
     (interfaceLambdaType,
      "MonteCarlo",
      "Use a Monte Carlo scheme as in the FORTRAN program",
      0);
   static SwitchOption interfaceLambdaTypeMSBar
     (interfaceLambdaType,
      "MSBar",
      "Use the MSBar scheme",
      1);
 }
 
 vector<Energy2> O2AlphaS::flavourThresholds() const {
   vector<Energy2> thresholds(_threshold.size());
   transform(_threshold.begin(), _threshold.end(),
 	    thresholds.begin(),
 	    sqr<Energy>);
   return thresholds;
 }
 
 void O2AlphaS::doinit() {
   // thresholds
   for ( int ix=1; ix<7; ++ix ) {
     if ( quarkMasses().empty() ) {
       tPDPtr p = getParticleData(ix);
       _threshold[ix-1] = p->mass();
     } else
       _threshold[ix-1] = quarkMasses()[ix-1];
   }
   // d is heavier than u, need to swap
   swap(_threshold[0],_threshold[1]);
 
   // beta function coefficients
   const double ca = generator()->standardModel()->Nc();
   const double cf = (sqr(ca)-1.)/2./ca;
   for(unsigned int ix=3;ix<7;++ix)
     {
       _bcoeff[ix-1]=(11.*ca-2.*ix)/(12.*Constants::pi);
       _ccoeff[ix-1]=(17.*sqr(ca)-ix*(5.*ca+3.*cf))/(24.*sqr(Constants::pi))/sqr(_bcoeff[ix-1]);
     }
   if(_copt==0)
     {
       double kfac(ca*(67./18.-sqr(Constants::pi)/6.)-25./9.);
       _lambdas[5]=_lambdaQCD*exp(kfac/(4.*Constants::pi*_bcoeff[4]))/sqrt(2.);
     }
   else{_lambdas[5]=_lambdaQCD;}
   // calculate the threshold matching
   double rho=2.*log(_threshold[5]/_lambdas[5]);
   double rat=log(rho)/rho;
   _match[5]=(_bcoeff[4]/(1.-_ccoeff[4]*rat)-_bcoeff[5]/(1.-_ccoeff[5]*rat))*rho;
   rho=2.*log(_threshold[4]/_lambdas[5]);
   rat=log(rho)/rho;
   _match[4]=(_bcoeff[4]/(1.-_ccoeff[4]*rat)-_bcoeff[3]/(1.-_ccoeff[3]*rat))*rho;
   rho=2.*log(_threshold[3]/_lambdas[5]);
   rat=log(rho)/rho;
   _match[3]=(_bcoeff[3]/(1.-_ccoeff[3]*rat)-_bcoeff[2]/(1.-_ccoeff[2]*rat))*rho
     +_match[4];
   // calculate the 4-flavour lambda
   _lambdas[4]=_lambdas[5]*pow(_threshold[4]/_lambdas[5],2./25.)*
     pow(2.*log(_threshold[4]/_lambdas[5]),963./14375.);
   // calculate the 3-flavour lambda
   double eps(1.e-6),d35(-1./(_bcoeff[2]*_match[3])),rlf,drh;
   unsigned int ix=0;
   do
     {
       rat=log(d35)/d35;
       rlf=_bcoeff[2]*d35/(1.-_ccoeff[2]*rat);
       drh=_bcoeff[2]*(rlf+_match[3])*sqr(d35)/
 	((1.-2.*_ccoeff[2]*rat+_ccoeff[2]/d35)*sqr(rlf));
       d35=d35-drh;
       ++ix;
     }
   while(ix<100&&abs(drh)>eps*d35);
   _lambdas[3]=_lambdas[5]*exp(0.5*d35);
   AlphaSBase::doinit();
 }
 
 vector<Energy> O2AlphaS::LambdaQCDs() const
 {
   vector<Energy> output(4,_lambdas[3]);
   output.push_back(_lambdas[4]);
   output.push_back(_lambdas[5]);
   output.push_back(_lambdas[5]);
   return output;
 }
 
 
 
 double O2AlphaS::value(Energy2 scale, const StandardModelBase &) const
 {
   Energy rs=sqrt(scale);
   if(scale<sqr(_lambdas[5])) {
-    cerr << "O2AlphaS called with scale less than Lambda QCD "
-	 << "scale = " << rs/MeV << " MeV and "
-	 << "Lambda = " << _lambdas[5]/MeV << " MeV\n";
-    generator()->log() << "O2AlphaS called with scale less than Lambda QCD "
-		       << "scale = " << rs/MeV << " MeV and "
-		       << "Lambda = " << _lambdas[5]/MeV << " MeV\n";
+    generator()->logWarning(Exception()
+			    << "O2AlphaS called with scale less than Lambda QCD "
+			    << "scale = " << rs/MeV << " MeV and "
+			    << "Lambda = " << _lambdas[5]/MeV << " MeV"
+			    << Exception::warning);
     return 0.;
   }
   double rho=2.*log(rs/_lambdas[5]),rat(log(rho)/rho);
   double rlf;
   if(rs>_threshold[5])      rlf=_bcoeff[5]*rho/(1.-_ccoeff[5]*rat)+_match[5];
   else if(rs>_threshold[4]) rlf=_bcoeff[4]*rho/(1.-_ccoeff[4]*rat);
   else if(rs>_threshold[3]) rlf=_bcoeff[3]*rho/(1.-_ccoeff[3]*rat)+_match[4];
   else                      rlf=_bcoeff[2]*rho/(1.-_ccoeff[2]*rat)+_match[3];
   // must be possible
   if(rlf<=0.) {
-    generator()->log() << "O2AlphaS coupling less than zero \n";
+    generator()->logWarning(Exception() << "O2AlphaS coupling less than zero"
+			    << Exception::warning) ;
     return 0.;
   }
   return 1./rlf;
 }