Index: include/IMP/restraints/DistanceRestraint.h
===================================================================
--- include/IMP/restraints/DistanceRestraint.h	(revision 651)
+++ include/IMP/restraints/DistanceRestraint.h	(working copy)
@@ -28,23 +28,18 @@
 class IMPDLLEXPORT DistanceRestraint : public Restraint
 {
 public:
-
-  DistanceRestraint(Model* model, Particle* p1, Particle* p2,
+  //! Create the distance restraint.
+  /** \param[in] p1 Pointer to first particle in distance restraint.
+      \param[in] p2 Pointer to second particle in distance restraint.
+      \param[in] score_func Scoring function for the restraint.
+   */
+  DistanceRestraint(Particle* p1, Particle* p2,
                     ScoreFunc* score_func);
   virtual ~DistanceRestraint();
 
   IMP_RESTRAINT("0.5", "Daniel Russel")
 
 protected:
-  //! Do set up for the distance restraint constructors.
-  /** \param[in] model Pointer to the model.
-      \param[in] p1 Pointer to first particle in distance restraint.
-      \param[in] p2 Pointer to second particle in distance restraint.
-      \param[in] score_func Scoring function for the restraint.
-   */
-  void set_up(Model* model, Particle* p1, Particle* p2,
-              ScoreFunc* score_func);
-
   //! scoring function for this restraint
   ScoreFunc* score_func_;
 };
Index: include/IMP/restraints/SphericalRestraint.h
===================================================================
--- include/IMP/restraints/SphericalRestraint.h	(revision 651)
+++ include/IMP/restraints/SphericalRestraint.h	(working copy)
@@ -22,8 +22,8 @@
 class IMPDLLEXPORT SphericalRestraint : public Restraint
 {
 public:
+  // Create the SphericalRestraint.
   /**
-     \param[in] model
      \param[in] p The particle to restrict.
      \param[in] x The x coordinate to take distance to.
      \param[in] y The y coordinate to take distance to.
@@ -31,7 +31,7 @@
      \param[in] score_func The scoring function. It is deleted in the
                            destructor.
    */
-  SphericalRestraint(Model* model, Particle* p,
+  SphericalRestraint(Particle* p,
                      Float x, Float y, Float z,
                      ScoreFunc* score_func);
   virtual ~SphericalRestraint();
Index: src/restraints/ProximityRestraint.cpp
===================================================================
--- src/restraints/ProximityRestraint.cpp	(revision 651)
+++ src/restraints/ProximityRestraint.cpp	(working copy)
@@ -39,7 +39,7 @@
       // create the restraint
 
       ScoreFunc *sf = score_func_params->create_score_func();
-      dist_rsrs_[idx] = new DistanceRestraint(model, get_particle(i),
+      dist_rsrs_[idx] = new DistanceRestraint(get_particle(i),
                                               get_particle(j),
                                               sf);
       idx++;
@@ -84,8 +84,7 @@
       IMP_LOG(VERBOSE, i << " " << j << " add distance: " << actual_mean);
       score_func_params->set_mean(actual_mean);
       ScoreFunc *sf = score_func_params->create_score_func();
-      dist_rsrs_[idx] = new DistanceRestraint(model,
-                                              get_particle(i),
+      dist_rsrs_[idx] = new DistanceRestraint(get_particle(i),
                                               get_particle(j),
                                               sf);
       idx++;
Index: src/restraints/DistanceRestraint.cpp
===================================================================
--- src/restraints/DistanceRestraint.cpp	(revision 651)
+++ src/restraints/DistanceRestraint.cpp	(working copy)
@@ -19,29 +19,9 @@
 //! particles must be at least this far apart to calculate the restraint
 static const Float MIN_DISTANCE = 0.0000001;
 
-//! Constructor - set up the restraint using a given mean.
-/** \param[in] model Pointer to the model.
-    \param[in] p1 Pointer to first particle in distance restraint.
-    \param[in] p2 Pointer to second particle in distance restraint.
-    \param[in] score_func Scoring function for the restraint.
- */
-DistanceRestraint::DistanceRestraint(Model* model, Particle* p1, Particle* p2,
+DistanceRestraint::DistanceRestraint(Particle* p1, Particle* p2,
                                      ScoreFunc* score_func)
 {
-  set_up(model, p1, p2, score_func);
-}
-
-
-//! Do set up for the distance restraint constructors.
-/** \param[in] model Pointer to the model.
-    \param[in] p1 Pointer to first particle in distance restraint.
-    \param[in] p2 Pointer to second particle in distance restraint.
-    \param[in] score_func_params Score function parameters for the restraint.
- */
-void DistanceRestraint::set_up(Model* , Particle* p1, Particle* p2,
-                               ScoreFunc* score_func)
-{
-  // LogMsg(VERBOSE, "Set up distance restraint.");
   add_particle(p1);
   add_particle(p2);
 
@@ -100,7 +80,10 @@
     score = (*score_func_)(distance);
   }
 
-  IMP_LOG(VERBOSE, "distance: " << distance << "   score: " << score);
+  IMP_LOG(VERBOSE, "For " << get_particle(0)->get_index() 
+          << " and " << get_particle(1)->get_index() 
+          << " distance: " << distance 
+          << " score: " << score << std::endl);
   return score;
 }
 
@@ -122,6 +105,7 @@
   out << " and " << get_particle(1)->get_index();
   out << "  ";
   score_func_->show(out);
+  out << std::endl;
 }
 
 }  // namespace IMP
Index: src/restraints/PairConnectivityRestraint.cpp
===================================================================
--- src/restraints/PairConnectivityRestraint.cpp	(revision 651)
+++ src/restraints/PairConnectivityRestraint.cpp	(working copy)
@@ -53,8 +53,7 @@
       } else {
         IMP_LOG(VERBOSE, "Adding possible restraint: " << i << " " << j);
         ScoreFunc *sf = score_func_params->create_score_func();
-        rs_iter->rsr_ = new DistanceRestraint(model,
-                                              get_particle(i),
+        rs_iter->rsr_ = new DistanceRestraint(get_particle(i),
                                               get_particle(j),
                                               sf);
 
@@ -118,8 +117,7 @@
       } else {
         IMP_LOG(VERBOSE, "Adding possible restraint: " << i << " " << j);
         ScoreFunc *sf = score_func_params->create_score_func();
-        rs_iter->rsr_ = new DistanceRestraint(model,
-                                              get_particle(i),
+        rs_iter->rsr_ = new DistanceRestraint(get_particle(i),
                                               get_particle(j),
                                               sf);
 
Index: src/restraints/SphericalRestraint.cpp
===================================================================
--- src/restraints/SphericalRestraint.cpp	(revision 651)
+++ src/restraints/SphericalRestraint.cpp	(working copy)
@@ -22,7 +22,7 @@
 
 
 
-SphericalRestraint::SphericalRestraint(Model*, Particle* p,
+SphericalRestraint::SphericalRestraint(Particle* p,
                                        Float x, Float y, Float z,
                                        ScoreFunc* score_func)
 {
@@ -79,10 +79,13 @@
     out << "Spherical restraint (inactive):" << std::endl;
   }
 
-  out << "version: " << version() << "  ";
-  out << "last_modified_by: " << last_modified_by() << std::endl;
+  out << "  version: " << version() << "  ";
+  out << "  last_modified_by: " << last_modified_by() << std::endl;
   out << "  particle: " << get_particle(0)->get_index();
+  out << "  ";
+  score_func_->show(out);
   out << std::endl;
+  out << std::endl;
 }
 
 }  // namespace IMP
Index: src/restraints/ConnectivityRestraint.cpp
===================================================================
--- src/restraints/ConnectivityRestraint.cpp	(revision 651)
+++ src/restraints/ConnectivityRestraint.cpp	(working copy)
@@ -51,8 +51,7 @@
 
           // create the restraint
           ScoreFunc *sf = score_func_params->create_score_func();
-          rs_iter->rsr_ = new DistanceRestraint(model,
-                                                get_particle(i),
+          rs_iter->rsr_ = new DistanceRestraint(get_particle(i),
                                                 get_particle(j),
                                                 sf);
           ++rs_iter;
@@ -109,8 +108,7 @@
 
           // create the restraint
           ScoreFunc *sf = score_func_params->create_score_func();
-          rs_iter->rsr_ = new DistanceRestraint(model,
-                                                get_particle(i),
+          rs_iter->rsr_ = new DistanceRestraint(get_particle(i),
                                                 get_particle(j),
                                                 sf);
           ++rs_iter;
Index: src/restraints/ExclusionVolumeRestraint.cpp
===================================================================
--- src/restraints/ExclusionVolumeRestraint.cpp	(revision 651)
+++ src/restraints/ExclusionVolumeRestraint.cpp	(working copy)
@@ -74,8 +74,7 @@
 
       // create the restraint
       ScoreFunc *sf = score_func_params->create_score_func();
-      dist_rsrs_.push_back(new DistanceRestraint(model,
-                                                 get_particle(i),
+      dist_rsrs_.push_back(new DistanceRestraint(get_particle(i),
                                                  get_particle(j),
                                                  sf));
     }
@@ -128,8 +127,7 @@
 
       // create the restraint
       ScoreFunc *sf = score_func_params->create_score_func();
-      dist_rsrs_.push_back(new DistanceRestraint(model,
-                                                 get_particle(i),
+      dist_rsrs_.push_back(new DistanceRestraint(get_particle(i),
                                                  get_particle(j),
                                                  sf));
       idx++;
Index: test/coordinate/test_coordinate.py
===================================================================
--- test/coordinate/test_coordinate.py	(revision 651)
+++ test/coordinate/test_coordinate.py	(working copy)
@@ -25,8 +25,7 @@
     def _do_test(self, center, sf):
         """All coordinate values should be greater than the set minimum"""
 
-        r= IMP.SphericalRestraint(self.model,
-                                  self.model.get_particle(self.pi),
+        r= IMP.SphericalRestraint(self.model.get_particle(self.pi),
                                   center[0], center[1], center[2],
                                   sf)
         ri=self.model.add_restraint(r)
Index: test/distance/test_distance.py
===================================================================
--- test/distance/test_distance.py	(revision 651)
+++ test/distance/test_distance.py	(working copy)
@@ -35,7 +35,7 @@
         for sf in (IMP.HarmonicUpperBound(mean, 0.1),
                    IMP.HarmonicLowerBound(mean, 0.1),
                    IMP.Harmonic(mean, 0.1)):
-            r = IMP.DistanceRestraint(self.imp_model, p1, p2, sf)
+            r = IMP.DistanceRestraint(p1, p2, sf)
             self.rsrs.append(r)
 
     def _make_restraints(self):
@@ -53,27 +53,27 @@
         # all should be 0.0
         for fs in (IMP.HarmonicUpperBound(3.0, 0.1),
                    IMP.HarmonicLowerBound(3.0, 0.1), IMP.Harmonic(3.0, 0.1)):
-            r = IMP.DistanceRestraint(self.imp_model, self.particles[1],
+            r = IMP.DistanceRestraint(self.particles[1],
                                       self.particles[0], fs)
             self.rsrs.append(r)
 
         # exceed lower bound
         for fs in (IMP.HarmonicUpperBound(5.0, 0.1),
                    IMP.HarmonicLowerBound(5.0, 0.1), IMP.Harmonic(5.0, 0.1)):
-            r = IMP.DistanceRestraint(self.imp_model, self.particles[1],
+            r = IMP.DistanceRestraint(self.particles[1],
                                       self.particles[2], fs)
             self.rsrs.append(r)
 
         # exceed upper bound
         for fs in (IMP.HarmonicUpperBound(4.0, 0.1),
                    IMP.HarmonicLowerBound(4.0, 0.1), IMP.Harmonic(4.0, 0.1)):
-            r = IMP.DistanceRestraint(self.imp_model, self.particles[0],
+            r = IMP.DistanceRestraint(self.particles[0],
                                       self.particles[2], fs)
             self.rsrs.append(r)
 
     def test_show(self):
         """Test Restraint::show() method"""
-        r = IMP.DistanceRestraint(self.imp_model, self.particles[1],
+        r = IMP.DistanceRestraint(self.particles[1],
                                   self.particles[0], IMP.Harmonic(0.0, 0.1))
         r.show()
 
Index: test/misc/test_restraint_sets.py
===================================================================
--- test/misc/test_restraint_sets.py	(revision 651)
+++ test/misc/test_restraint_sets.py	(working copy)
@@ -17,7 +17,7 @@
                                                     20.0, 74.0, -80.0))
 
         # separate particles by 5.0:
-        self.distrsr = IMP.DistanceRestraint(self.model, self.particles[0],
+        self.distrsr = IMP.DistanceRestraint(self.particles[0],
                                              self.particles[1],
                                              IMP.Harmonic(5.0, 0.1))
 
Index: test/modeller/test_exclusion_volumes.py
===================================================================
--- test/modeller/test_exclusion_volumes.py	(revision 651)
+++ test/modeller/test_exclusion_volumes.py	(working copy)
@@ -126,14 +126,14 @@
             p2 = self.particles[i+1]
             mean = p1.get_value(radius) + p2.get_value(radius)
             sf = IMP.HarmonicUpperBound(mean, 0.1)
-            rsrs.append(IMP.DistanceRestraint(self.imp_model, p1, p2, sf))
+            rsrs.append(IMP.DistanceRestraint(p1, p2, sf))
 
         for i in range(5, 11):
             p1 = self.particles[i]
             p2 = self.particles[i+1]
             mean = p1.get_value(radius) + p2.get_value(radius)
             sf = IMP.HarmonicUpperBound(mean, 0.1)
-            rsrs.append(IMP.DistanceRestraint(self.imp_model, p1, p2, sf))
+            rsrs.append(IMP.DistanceRestraint(p1, p2, sf))
 
         # create the exclusion volume for each protein
         score_func_params_lb = IMP.BasicScoreFuncParams("harmonic_lower_bound", 0.0, 0.1)
@@ -192,14 +192,14 @@
             p2 = self.particles[i+1]
             mean = p1.get_value(radius) + p2.get_value(radius)
             sf = IMP.HarmonicUpperBound(mean, 0.1)
-            rsrs.append(IMP.DistanceRestraint(self.imp_model, p1, p2, sf))
+            rsrs.append(IMP.DistanceRestraint(p1, p2, sf))
 
         for i in range(5, 11):
             p1 = self.particles[i]
             p2 = self.particles[i+1]
             mean = p1.get_value(radius) + p2.get_value(radius)
             sf = IMP.HarmonicUpperBound(mean, 0.1)
-            rsrs.append(IMP.DistanceRestraint(self.imp_model, p1, p2, sf))
+            rsrs.append(IMP.DistanceRestraint(p1, p2, sf))
 
         # create the exclusion volume for each protein
         score_func_params_lb = IMP.BasicScoreFuncParams("harmonic_lower_bound", 0.0, 0.1)
Index: test/sd_optimizer/test_sd_optimizer.py
===================================================================
--- test/sd_optimizer/test_sd_optimizer.py	(revision 651)
+++ test/sd_optimizer/test_sd_optimizer.py	(working copy)
@@ -36,7 +36,7 @@
             p2 = self.particles[pairs[1]]
             mean = p1.get_value(radkey) + p2.get_value(radkey)
             sf = IMP.Harmonic(mean, 0.1)
-            rsr = IMP.DistanceRestraint(self.imp_model, p1, p2, sf)
+            rsr = IMP.DistanceRestraint(p1, p2, sf)
             self.rsrs.append(rsr)
 
         # add restraints
Index: pyext/IMP/utils.py
===================================================================
--- pyext/IMP/utils.py	(revision 651)
+++ pyext/IMP/utils.py	(working copy)
@@ -88,7 +88,7 @@
             mean = particles[i].get_value(radius_name) \
                    + particles[j].get_value(radius_name)
             sf = IMP.HarmonicLowerBound(mean, sd)
-            rsrs.append(IMP.DistanceRestraint(model, particles[i], particles[j],
+            rsrs.append(IMP.DistanceRestraint(particles[i], particles[j],
                                               sf))
 
 
Index: pyext/IMP/xml_loader.py
===================================================================
--- pyext/IMP/xml_loader.py	(revision 651)
+++ pyext/IMP/xml_loader.py	(working copy)
@@ -198,7 +198,7 @@
 
         score_func_params = get_basic_score_func_params(score_func_str, distance, sd)
         sf = score_func_params.create_score_func()
-        model.restraints.append(IMP.DistanceRestraint(model, p1, p2, sf))
+        model.restraints.append(IMP.DistanceRestraint(p1, p2, sf))
         model.restraint_sets[rs_idx].add_restraint(model.restraints[len(model.restraints)-1])
 
 
Index: pyext/IMP.i
===================================================================
--- pyext/IMP.i	(revision 651)
+++ pyext/IMP.i	(working copy)
@@ -25,10 +25,10 @@
         args[1].thisown=0
   %}
   %pythonprepend DistanceRestraint::DistanceRestraint %{
-        args[3].thisown=0
+        args[2].thisown=0
   %}
   %pythonprepend SphericalRestraint::SphericalRestraint %{
-        args[5].thisown=0
+        args[4].thisown=0
   %}
 }