diff --git a/CEP/DP3/DPPP_DDECal/include/DPPP_DDECal/multidirsolver.h b/CEP/DP3/DPPP_DDECal/include/DPPP_DDECal/multidirsolver.h
index c5b054cecee9c5eb653b98ed50b4d5485303f1e5..11423cf04c3304c9033a3dd0e43295bcf7dfb66d 100644
--- a/CEP/DP3/DPPP_DDECal/include/DPPP_DDECal/multidirsolver.h
+++ b/CEP/DP3/DPPP_DDECal/include/DPPP_DDECal/multidirsolver.h
@@ -28,12 +28,7 @@ public:
     std::vector<std::vector<Constraint::Result> > _results;
   };
   
-  enum CalibrationMode { CalibrateComplexGain, 
-                         CalibrateTEC1, 
-                         CalibrateTEC2, 
-                         CalibratePhase };
-  
-  MultiDirSolver(size_t maxIterations, double accuracy, double stepSize, bool phaseOnly = true);
+  MultiDirSolver(size_t maxIterations, double accuracy, double stepSize);
   
   void init(size_t nAntennas, size_t nDirections, size_t nChannels, 
             const std::vector<int>& ant1, const std::vector<int>& ant2);
@@ -44,7 +39,7 @@ public:
   SolveResult process(std::vector<Complex*>& data, std::vector<std::vector<Complex* > >& modelData,
     std::vector<std::vector<DComplex> >& solutions, double time) const;
   
-  void set_mode(CalibrationMode mode) { _mode = mode; }
+  void set_phase_only(bool phaseOnly) { _phaseOnly = phaseOnly; }
   
   void set_channel_blocks(size_t nChannelBlocks) { _nChannelBlocks = nChannelBlocks; }
   
@@ -69,7 +64,6 @@ private:
   std::vector<int> _ant1, _ant2;
   
   // Calibration setup
-  enum CalibrationMode _mode;
   size_t _maxIterations;
   double _accuracy;
   double _stepSize;
diff --git a/CEP/DP3/DPPP_DDECal/src/DDECal.cc b/CEP/DP3/DPPP_DDECal/src/DDECal.cc
index 2cea2a8c14668f93c69b7359fe6fc2fcdd6bac27..335a6c2dd240740a4d2af6e991730469e616cf28 100644
--- a/CEP/DP3/DPPP_DDECal/src/DDECal.cc
+++ b/CEP/DP3/DPPP_DDECal/src/DDECal.cc
@@ -116,21 +116,32 @@ namespace LOFAR {
         itsConstraints.push_back(casacore::CountedPtr<Constraint>(
           new CoreConstraint()));
       }
-      if (itsMode == GainCal::PHASEONLY) {
+      switch(itsMode) {
+        case GainCal::PHASEONLY:
         itsConstraints.push_back(casacore::CountedPtr<Constraint>(
                   new PhaseConstraint()));
-      } else if (itsMode == GainCal::TEC) {
+        itsMultiDirSolver.set_phase_only(true);
+        break;
+        case GainCal::TEC:
         itsConstraints.push_back(casacore::CountedPtr<Constraint>(
                   new TECConstraint(TECConstraint::TECOnlyMode)));
-      } else if (itsMode == GainCal::TECANDPHASE){
+        itsMultiDirSolver.set_phase_only(true);
+        break;
+        case GainCal::TECANDPHASE:
         itsConstraints.push_back(casacore::CountedPtr<Constraint>(
                   new TECConstraint(TECConstraint::TECAndCommonScalarMode)));
-      } else if (itsMode == GainCal::COMPLEXGAIN) {
+        itsMultiDirSolver.set_phase_only(true);
+        break;
+        case GainCal::COMPLEXGAIN:
         // no constraints
-      } else if (itsMode == GainCal::TECSCREEN) {
+        itsMultiDirSolver.set_phase_only(false);
+        break;
+        case GainCal::TECSCREEN:
         itsConstraints.push_back(casacore::CountedPtr<Constraint>(
-		  new ScreenConstraint(parset, prefix+"tecscreen.")));
-      } else {
+                  new ScreenConstraint(parset, prefix+"tecscreen.")));
+        itsMultiDirSolver.set_phase_only(true);
+        break;
+        default:
         THROW (Exception, "Unexpected mode: " << 
                           GainCal::calTypeToString(itsMode));
       }
diff --git a/CEP/DP3/DPPP_DDECal/src/multidirsolver.cc b/CEP/DP3/DPPP_DDECal/src/multidirsolver.cc
index 8a092677b64577a162c581eaba4f7cead1047b5b..96bfd7983bb343af940fa21d1dff2508db3cd9cb 100644
--- a/CEP/DP3/DPPP_DDECal/src/multidirsolver.cc
+++ b/CEP/DP3/DPPP_DDECal/src/multidirsolver.cc
@@ -7,16 +7,15 @@
 
 using namespace arma;
 
-MultiDirSolver::MultiDirSolver(size_t maxIterations, double accuracy, double stepSize, bool phaseOnly) :
+MultiDirSolver::MultiDirSolver(size_t maxIterations, double accuracy, double stepSize) :
   _nAntennas(0),
   _nDirections(0),
   _nChannels(0),
   _nChannelBlocks(0),
-  _mode(CalibrateComplexGain),
   _maxIterations(maxIterations),
   _accuracy(accuracy),
   _stepSize(stepSize),
-  _phaseOnly(phaseOnly)
+  _phaseOnly(false)
 {
 }