Index: kernel/include/IMP/optimizers/MonteCarlo.h
===================================================================
--- kernel/include/IMP/optimizers/MonteCarlo.h	(revision 399)
+++ kernel/include/IMP/optimizers/MonteCarlo.h	(working copy)
@@ -44,10 +44,8 @@
   /** The number of local steps must be nonzero for the 
       local optimizer to be used.
    */
-  void set_local_optimizer(Optimizer* cg) {
-    cg_=std::auto_ptr<Optimizer>(cg);
-    cg_->set_model(get_model());
-  }
+  void set_local_optimizer(Optimizer* cg);
+
   //! Set the temperature for the Metropolis criteria
   void set_temperature(Float t) {
     IMP_assert(t>0, "Temperature must be positive");
Index: kernel/src/Optimizer.cpp
===================================================================
--- kernel/src/Optimizer.cpp	(revision 399)
+++ kernel/src/Optimizer.cpp	(working copy)
@@ -12,7 +12,7 @@
 {
 
 //! Constructor
-Optimizer::Optimizer()
+Optimizer::Optimizer(): model_(NULL)
 {
   IMP_LOG(VERBOSE, "MEMORY: Optimizer created " << this << std::endl);
 }
Index: kernel/src/optimizers/MonteCarlo.cpp
===================================================================
--- kernel/src/optimizers/MonteCarlo.cpp	(revision 399)
+++ kernel/src/optimizers/MonteCarlo.cpp	(working copy)
@@ -37,6 +37,13 @@
 Float MonteCarlo::optimize(unsigned int max_steps)
 {
   IMP_CHECK_OBJECT(this);
+  if (cg_.get() != NULL) {
+    IMP_CHECK_OBJECT(cg_.get());
+    IMP_check(cg_->get_model() == get_model(),
+               "The model used by the local optimizer does not match "\
+              " that used by the montecarlo optimizer",
+              InvalidStateException("Bad model pointer"));
+  }
   update_states();
   prior_energy_ =get_model()->evaluate(0);
   IMP_LOG(VERBOSE, "MC Initial energy is " << prior_energy_ << std::endl);
@@ -98,6 +105,11 @@
 }
 
 
+void MonteCarlo::set_local_optimizer(Optimizer* cg) {
+  cg_=std::auto_ptr<Optimizer>(cg);
+  cg_->set_model(get_model());
+}
+
 void MonteCarlo::show(std::ostream &out) const
 {
   out << "MonteCarlo +" << stat_forward_steps_taken_