diff --git a/bedpostx b/bedpostx
index cd73f6d77310c8890e19d0ef4de05c27d4d66fe8..f56d0c42bcc18f48717dd716c1f31561522ba240 100755
--- a/bedpostx
+++ b/bedpostx
@@ -24,7 +24,6 @@ Usage() {
     echo "-b (burnin period, default 1000)"
     echo "-j (number of jumps, default 1250)"
     echo "-s (sample every, default 25)"
-    echo "-model (1:monoexponential [default] - 2:non-monoexponential [to be used in multi-shell acquisitions])"
     echo ""
     exit 1
 }
@@ -188,7 +187,7 @@ bedpostid=`${FSLDIR}/bin/fsl_sub -j $preprocid -l ${subjdir}.bedpostX/logs -M $m
 echo Queuing post processing stage
 mergeid=`${FSLDIR}/bin/fsl_sub -j $bedpostid -T 60 -m as -N bpx_postproc -l ${subjdir}.bedpostX/logs ${FSLDIR}/bin/bedpostx_postproc.sh $subjdir`
 
-#[ "x$SGE_ROOT" = "x" ] && kill -USR1 $monitorpid
+[ "x$SGE_ROOT" = "x" ] && kill -USR1 $monitorpid
 
 if [ "x$SGE_ROOT" != "x" ]; then
     echo
diff --git a/diffmodels.cc b/diffmodels.cc
index 78e052e1100968e983efca33fa0ef4686c5fde27..670c8881d356a02871f0f2059b3e1dd3f9123c1e 100644
--- a/diffmodels.cc
+++ b/diffmodels.cc
@@ -449,7 +449,7 @@ void PVM_single::fit(){
   ColumnVector start(nparams);
   start(1) = dti.get_s0();
   start(2) = dti.get_md()>0?dti.get_md()*2:0.001; // empirically found that d~2*MD
-  start(3) = f2x(dti.get_fa()); // first pvf = FA 
+  start(3) = dti.get_fa()<1?f2x(dti.get_fa()):f2x(0.95); // first pvf = FA 
   start(4) = _th;
   start(5) = _ph;
   float sumf=x2f(start(2));
@@ -725,34 +725,22 @@ void PVM_multi::fit(){
   DTI dti(Y,bvecs,bvals);
   dti.linfit();
 
-  // set starting parameters for nonlinear fitting
-  float _th,_ph;
-  cart2sph(dti.get_v1(),_th,_ph);
+  // initialise with simple pvm
+  PVM_single pvm1(Y,bvecs,bvals,nfib);
+  pvm1.fit();
 
   float _a,_b;
   _a = 1; // start with d=d_std
-  _b = dti.get_md()>0?dti.get_md()*2:0.001;
+  _b = pvm1.get_d();
 
   ColumnVector start(nparams);
-  start(1) = dti.get_s0();
+  start(1) = pvm1.get_s0();
   start(2) = _a;
   start(3) = _b;
-  start(4) = f2x(dti.get_fa());                   // first pvf = FA 
-  start(5) = _th;
-  start(6) = _ph;
-  float sumf=x2f(start(2));
-  float tmpsumf=sumf;
-  for(int ii=2,i=7;ii<=nfib;ii++,i+=3){
-    float denom=2;
-    do{
-      start(i) = f2x(x2f(start(i-3))/denom);
-      denom *= 2;
-      tmpsumf = sumf + x2f(start(i));
-    }while(tmpsumf>=1);
-    sumf += x2f(start(i));
-    cart2sph(dti.get_v(ii),_th,_ph);
-    start(i+1) = _th;
-    start(i+2) = _ph;
+  for(int i=1,ii=4;i<=nfib;i++,ii+=3){
+    start(ii) = pvm1.get_f(i);
+    start(ii+1) = pvm1.get_th(i);
+    start(ii+2) = pvm1.get_ph(i);
   }
   
   // do the fit
diff --git a/xfibresoptions.h b/xfibresoptions.h
index 0b0ad776b5776a647b85b2f5cbd7f2b185df7e7a..5ae705d43b6b76fe775749e1d2c4509c8cc9c2b4 100644
--- a/xfibresoptions.h
+++ b/xfibresoptions.h
@@ -36,7 +36,7 @@ class xfibresOptions {
   Option<string> bvecsfile;
   Option<string> bvalsfile;
   Option<int> nfibres;
-  Option<int> modelnum;
+  FmribOption<int> modelnum;
   Option<float> fudge;
   Option<int> njumps;
   Option<int> nburn;