diff --git a/test/test_multiplefit.py b/test/test_multiplefit.py
index 3d2f1e657e0bfe8571c74583b4651f5e44e0e919..05e38b4583f5c309b41658b4d1d7af01820d1231 100755
--- a/test/test_multiplefit.py
+++ b/test/test_multiplefit.py
@@ -3,7 +3,7 @@ import IMP
 import IMP.core
 import IMP.algebra
 import IMP.atom
-
+import IMP.test
 import IMP.pmi.macros
 
 import IMP.bayesianem
@@ -11,7 +11,7 @@ import IMP.bayesianem.restraint
 
 import math
 
-def setup_gaussian():
+def setup_gaussian(m):
     std=[1,1,1]
     center=[0,0,0]
     var=[s**2 for s in std]
@@ -25,11 +25,10 @@ def setup_gaussian():
     return p
 
 
-def create_gem_ref(target_ps,density_ps,label):
-    gem = IMP.bayesianem.restraint.GaussianEMRestraintWrapper(density_ps,target_ps=target_ps,
-                                                slope=0.000001,
-                                                target_radii_scale=3.0,
-                                                target_is_rigid_body=True)
+def create_gem_ref(root_hier, target_ps, density_ps, label):
+    gem = IMP.bayesianem.restraint.GaussianEMRestraintWrapper(
+        density_ps, target_ps=target_ps, slope=0.000001,
+        target_radii_scale=3.0, target_is_rigid_body=True)
     gem.set_label(label)
     gem.add_target_density_to_hierarchy(root_hier)
     gem.add_to_model()
@@ -56,76 +55,81 @@ def create_gem_cross(target_ps,density_ps,label):
     return gem
 
 
-# setting up parameters
-
-rbmaxtrans = 4.00
-fbmaxtrans = 5.00
-rbmaxrot=0.05
-outputobjects = []
-sampleobjects = []
-
-# setting up topology
-
-m = IMP.Model()
-s = IMP.pmi.topology.System(m)
-root_hier = s.build()
-
-#em
-p11=setup_gaussian()
-p21=setup_gaussian()
-p31=setup_gaussian()
-p12=setup_gaussian()
-p22=setup_gaussian()
-p32=setup_gaussian()
-
-#root_hier.add_child(IMP.atom.Hierarchy.setup_particle(p1))
-#root_hier.add_child(IMP.atom.Hierarchy.setup_particle(p2))
-#root_hier.add_child(IMP.atom.Hierarchy.setup_particle(p3))
-
-IMP.atom.show_molecular_hierarchy(root_hier)
-
-
-gem=create_gem_ref([p11,p12],[p21,p22],'12')
-print(gem.get_output())
-outputobjects.append(gem)
-sampleobjects.append(gem)
-
-gem=create_gem_ref([p11,p12],[p31,p32],'13')
-print(gem.get_output())
-outputobjects.append(gem)
-sampleobjects.append(gem)
-
-gem=create_gem_cross([p21,p22],[p31,p32],'23')
-print(gem.get_output())
-outputobjects.append(gem)
-sampleobjects.append(gem)
-
-
-
-mc1=IMP.pmi.macros.ReplicaExchange0(m,
-                                    root_hier=root_hier,
-                                    monte_carlo_sample_objects=sampleobjects,
-                                    output_objects=outputobjects,
-                                    monte_carlo_temperature=1.0,
-                                    simulated_annealing=None,
-                                    simulated_annealing_minimum_temperature=1.0,
-                                    simulated_annealing_maximum_temperature=20.0,
-                                    simulated_annealing_minimum_temperature_nframes=100,
-                                    simulated_annealing_maximum_temperature_nframes=100,
-                                    replica_exchange_minimum_temperature=1.0,
-                                    replica_exchange_maximum_temperature=100.0,
-                                    number_of_best_scoring_models=0,
-                                    monte_carlo_steps=10,
-                                    number_of_frames=100000,
-                                    write_initial_rmf=True,
-                                    initial_rmf_name_suffix="initial",
-                                    stat_file_name_suffix="stat",
-                                    best_pdb_name_suffix="model",
-                                    do_clean_first=True,
-                                    do_create_directories=True,
-                                    global_output_directory="output_shuffle_rex_xl",
-                                    rmf_dir="rmfs/",
-                                    best_pdb_dir="pdbs/",
-                                    replica_stat_file_suffix="stat_replica")
-mc1.execute_macro()
-
+class Tests(IMP.test.TestCase):
+    def test_multiple(self):
+        # setting up parameters
+
+        rbmaxtrans = 4.00
+        fbmaxtrans = 5.00
+        rbmaxrot=0.05
+        outputobjects = []
+        sampleobjects = []
+
+        # setting up topology
+
+        m = IMP.Model()
+        s = IMP.pmi.topology.System(m)
+        root_hier = s.build()
+
+        #em
+        p11=setup_gaussian(m)
+        p21=setup_gaussian(m)
+        p31=setup_gaussian(m)
+        p12=setup_gaussian(m)
+        p22=setup_gaussian(m)
+        p32=setup_gaussian(m)
+
+        #root_hier.add_child(IMP.atom.Hierarchy.setup_particle(p1))
+        #root_hier.add_child(IMP.atom.Hierarchy.setup_particle(p2))
+        #root_hier.add_child(IMP.atom.Hierarchy.setup_particle(p3))
+
+        IMP.atom.show_molecular_hierarchy(root_hier)
+
+
+        gem=create_gem_ref(root_hier, [p11,p12],[p21,p22],'12')
+        print(gem.get_output())
+        outputobjects.append(gem)
+        sampleobjects.append(gem)
+
+        gem=create_gem_ref(root_hier, [p11,p12],[p31,p32],'13')
+        print(gem.get_output())
+        outputobjects.append(gem)
+        sampleobjects.append(gem)
+
+        gem=create_gem_cross([p21,p22],[p31,p32],'23')
+        print(gem.get_output())
+        outputobjects.append(gem)
+        sampleobjects.append(gem)
+
+
+
+        mc1=IMP.pmi.macros.ReplicaExchange0(
+            m, root_hier=root_hier,
+            monte_carlo_sample_objects=sampleobjects,
+            output_objects=outputobjects,
+            monte_carlo_temperature=1.0,
+            simulated_annealing=None,
+            simulated_annealing_minimum_temperature=1.0,
+            simulated_annealing_maximum_temperature=20.0,
+            simulated_annealing_minimum_temperature_nframes=100,
+            simulated_annealing_maximum_temperature_nframes=100,
+            replica_exchange_minimum_temperature=1.0,
+            replica_exchange_maximum_temperature=100.0,
+            number_of_best_scoring_models=0,
+            monte_carlo_steps=10,
+            number_of_frames=100000,
+            write_initial_rmf=True,
+            initial_rmf_name_suffix="initial",
+            stat_file_name_suffix="stat",
+            best_pdb_name_suffix="model",
+            do_clean_first=True,
+            do_create_directories=True,
+            global_output_directory="output_shuffle_rex_xl",
+            rmf_dir="rmfs/",
+            best_pdb_dir="pdbs/",
+            replica_stat_file_suffix="stat_replica")
+        mc1.execute_macro()
+
+
+if __name__ == '__main__':
+    IMP.test.main()