diff --git a/modules/mol/mm/pymod/export_modeller.cc b/modules/mol/mm/pymod/export_modeller.cc
index c186f8b4aa2da4e72fe0537f64d113e2444bf5da..8b1280425c3053f345e806f227cb13a303a5c472 100644
--- a/modules/mol/mm/pymod/export_modeller.cc
+++ b/modules/mol/mm/pymod/export_modeller.cc
@@ -10,9 +10,6 @@ void export_Modeller()
 
   class_<ost::mol::mm::Modeller>("MMModeller", no_init)
     .def("GenerateDisulfidBonds",&ost::mol::mm::Modeller::GenerateDisulfidBonds,(arg("ent"))).staticmethod("GenerateDisulfidBonds")
-    .def("GenerateCYSHEMEBonds",&ost::mol::mm::Modeller::GenerateCYSHEMEBonds,(arg("ent"))).staticmethod("GenerateCYSHEMEBonds")
-    .def("GenerateHISHEMEBonds",&ost::mol::mm::Modeller::GenerateHISHEMEBonds,(arg("ent"))).staticmethod("GenerateHISHEMEBonds")
-    .def("GenerateMETHEMEBonds",&ost::mol::mm::Modeller::GenerateDisulfidBonds,(arg("ent"))).staticmethod("GenerateMETHEMEBonds")
     .def("AssignPDBNaming",&ost::mol::mm::Modeller::AssignPDBNaming,(arg("ent"))).staticmethod("AssignPDBNaming")
     .def("AssignGromacsNaming",&ost::mol::mm::Modeller::AssignGromacsNaming,(arg("ent"))).staticmethod("AssignGromacsNaming")
   ;
diff --git a/modules/mol/mm/src/modeller.cc b/modules/mol/mm/src/modeller.cc
index fafdf5b74be2aad28b9172f497bccc953dbb7c69..1fedbae36fc9be04e7ae8e47d7a64da9da46945f 100644
--- a/modules/mol/mm/src/modeller.cc
+++ b/modules/mol/mm/src/modeller.cc
@@ -46,111 +46,6 @@ void Modeller::GenerateDisulfidBonds(ost::mol::EntityHandle& handle){
   }
 }
 
-void Modeller::GenerateCYSHEMEBonds(ost::mol::EntityHandle& handle){
-  
-  ost::mol::ResidueHandleList res_list = handle.GetResidueList();
-  ost::mol::XCSEditor ed = handle.EditXCS();
-
-  for(ost::mol::ResidueHandleList::iterator i = res_list.begin();
-      i != res_list.end(); ++i){
-    if(i->GetName() == "HEM" || i->GetName() == "HEME"){
-      ost::mol::AtomHandle fe = i->FindAtom("FE");
-      if(fe.IsValid()){
-        ost::mol::AtomHandleList in_reach = handle.FindWithin(fe.GetPos(), 3.0);
-        for(ost::mol::AtomHandleList::iterator j = in_reach.begin();
-            j != in_reach.end(); ++j){
-          if( j->GetName() == "SG"){
-            if(!ost::mol::BondExists(fe,*j)){
-              ed.Connect(fe,*j);
-            }
-            ed.RenameResidue(*i,"HEME");
-            ed.RenameResidue(j->GetResidue(),"CYS2");
-          }
-        }
-      }
-      ost::mol::AtomHandle cab = i->FindAtom("CAB");
-      if(cab.IsValid()){
-        ost::mol::AtomHandleList in_reach = handle.FindWithin(cab.GetPos(), 0.23);
-        for(ost::mol::AtomHandleList::iterator j = in_reach.begin();
-            j != in_reach.end(); ++j){
-          if(j->GetName() == "SG"){
-            if(!BondExists(cab,*j)){
-              ed.Connect(cab,*j);
-            }
-            ed.RenameResidue(*i,"HEME");
-            ed.RenameResidue(j->GetResidue(),"CYS2");
-          }
-        }
-      }
-      ost::mol::AtomHandle cac = i->FindAtom("CAC");
-      if(cac.IsValid()){
-        ost::mol::AtomHandleList in_reach = handle.FindWithin(cac.GetPos(),0.23);
-        for(ost::mol::AtomHandleList::iterator j = in_reach.begin();
-            j != in_reach.end(); ++j){
-          if(j->GetName() == "SG"){
-            if(!BondExists(cac,*j)){
-              ed.Connect(cac,*j);
-            }
-            ed.RenameResidue(*i,"HEME");
-            ed.RenameResidue(j->GetResidue(),"CYS2");
-          }
-        }
-      }
-    }
-  }
-}
-
-void Modeller::GenerateHISHEMEBonds(ost::mol::EntityHandle& handle){
-
-  ost::mol::ResidueHandleList res_list = handle.GetResidueList();
-  ost::mol::XCSEditor ed = handle.EditXCS();
-
-  for(ost::mol::ResidueHandleList::iterator i = res_list.begin();
-      i != res_list.end(); ++i){
-    if(i->GetName() == "HEM" || i->GetName() == "HEME"){
-      ost::mol::AtomHandle fe = i->FindAtom("FE");
-      if(fe.IsValid()){
-        ost::mol::AtomHandleList in_reach = handle.FindWithin(fe.GetPos(),2.5);
-        for(ost::mol::AtomHandleList::iterator j = in_reach.begin();
-            j != in_reach.end(); ++j){
-          if(j->GetName() == "NE2" && j->GetResidue().GetName() == "HIS"){
-            if(!ost::mol::BondExists(fe,*j)){
-              ed.Connect(fe,*j);
-            }
-            ed.RenameResidue(*i,"HEME");
-            ed.RenameResidue(j->GetResidue(),"HIS1");
-          }
-        }
-      }
-    }
-  }
-}
-
-void Modeller::GenerateMETHEMEBonds(ost::mol::EntityHandle& handle){
-
-  ost::mol::ResidueHandleList res_list = handle.GetResidueList();
-  ost::mol::XCSEditor ed = handle.EditXCS();
-
-  for(ost::mol::ResidueHandleList::iterator i = res_list.begin();
-      i != res_list.end(); ++i){
-    if(i->GetName() == "HEM" || i->GetName() == "HEME"){
-      ost::mol::AtomHandle fe = i->FindAtom("FE");
-      if(fe.IsValid()){
-        ost::mol::AtomHandleList in_reach = handle.FindWithin(fe.GetPos(),2.9);
-        for(ost::mol::AtomHandleList::iterator j = in_reach.begin();
-            j != in_reach.end(); ++j){
-          if(j->GetName() == "SD" && j->GetResidue().GetName() == "MET"){
-            if(!ost::mol::BondExists(fe,*j)){
-              ed.Connect(fe,*j);
-            }
-            ed.RenameResidue(*i,"HEME");
-          }
-        }
-      }
-    }
-  }
-}
-
 void Modeller::LowerPrecision(ost::mol::EntityHandle& handle){
 
   ost::mol::AtomHandleList atom_list = handle.GetAtomList();
diff --git a/modules/mol/mm/src/modeller.hh b/modules/mol/mm/src/modeller.hh
index 814a5edaadf33f23cd02b6fa9c9ae8ea557a6933..86037d320b343e01fc31b2cecbe699d82ec0be63 100644
--- a/modules/mol/mm/src/modeller.hh
+++ b/modules/mol/mm/src/modeller.hh
@@ -34,12 +34,6 @@ public:
 
   static void GenerateDisulfidBonds(ost::mol::EntityHandle& handle);
 
-  static void GenerateCYSHEMEBonds(ost::mol::EntityHandle& handle);
-
-  static void GenerateHISHEMEBonds(ost::mol::EntityHandle& handle);
-
-  static void GenerateMETHEMEBonds(ost::mol::EntityHandle& handle);
-
   //may sound pretty stupid...
   //But this is necessary if we want to compare our energies with
   //the energies calculated by gromacs. When ost writes and entity