diff --git a/modules/mol/alg/pymod/wrap_mol_alg.cc b/modules/mol/alg/pymod/wrap_mol_alg.cc
index a5db8de3560a56b1f31bead07cfc70b947850b79..4f1f03d4ef8424beb299d419c577cce61eebb0a8 100644
--- a/modules/mol/alg/pymod/wrap_mol_alg.cc
+++ b/modules/mol/alg/pymod/wrap_mol_alg.cc
@@ -35,8 +35,8 @@ namespace {
   
 Real (*ldt_a)(const mol::EntityView&, const mol::EntityView& ref, Real, Real)=&mol::alg::LocalDistTest;
 Real (*ldt_b)(const seq::AlignmentHandle&,Real, Real, int, int)=&mol::alg::LocalDistTest;
-mol::EntityView (*fc_a)(const mol::EntityView&, Real)=&mol::alg::FilterClashes;
-mol::EntityView (*fc_b)(const mol::EntityHandle&, Real)=&mol::alg::FilterClashes;
+mol::EntityView (*fc_a)(const mol::EntityView&, Real,bool)=&mol::alg::FilterClashes;
+mol::EntityView (*fc_b)(const mol::EntityHandle&, Real, bool)=&mol::alg::FilterClashes;
 }
 
 BOOST_PYTHON_MODULE(_mol_alg)
@@ -48,8 +48,8 @@ BOOST_PYTHON_MODULE(_mol_alg)
   
   def("LocalDistTest", ldt_a);
   def("LocalDistTest", ldt_b, (arg("ref_index")=0, arg("mdl_index")=1));
-  def("FilterClashes", fc_a, (arg("ent"), arg("tolerance")=0.1));
-  def("FilterClashes", fc_b, (arg("ent"), arg("tolerance")=0.1));
+  def("FilterClashes", fc_a, (arg("ent"), arg("tolerance")=0.1, arg("always_remove_bb")=false));
+  def("FilterClashes", fc_b, (arg("ent"), arg("tolerance")=0.1, arg("always_remove_bb")=false));
   def("SuperposeFrames", &ost::mol::alg::SuperposeFrames, 
       (arg("source"), arg("sel")=ost::mol::EntityView(), arg("begin")=0, 
        arg("end")=-1, arg("ref")=-1));
diff --git a/modules/mol/alg/src/filter_clashes.cc b/modules/mol/alg/src/filter_clashes.cc
index 12c539b3ecdd76b7022bed31141675060fa0dd85..7a176cba2841155aa0311f3c5c00c505f62b22c8 100644
--- a/modules/mol/alg/src/filter_clashes.cc
+++ b/modules/mol/alg/src/filter_clashes.cc
@@ -69,7 +69,8 @@ Real GetThreshold(const String& ele1, const String& ele2) {
 
 }
 
-EntityView FilterClashes(const EntityView& ent, Real tolerance)
+EntityView FilterClashes(const EntityView& ent, Real tolerance, 
+                         bool always_remove_bb)
 {
   EntityView filtered=ent.CreateEmptyView();
   ResidueViewList residues=ent.GetResidueList();
@@ -106,6 +107,10 @@ EntityView FilterClashes(const EntityView& ent, Real tolerance)
         Real threshold=GetThreshold(ele1, ele2)-tolerance;
         if (d<threshold*threshold) {
           remove_sc=true;
+          if (always_remove_bb==true) {
+            remove_bb=true;
+            continue;
+          }
           String name=atom.GetName();
           if (name=="CA" || name=="N" || name=="O" || name=="C") {
             remove_bb=true;
@@ -134,9 +139,10 @@ EntityView FilterClashes(const EntityView& ent, Real tolerance)
 }
 
 
-EntityView FilterClashes(const EntityHandle& ent, Real tolerance)
+EntityView FilterClashes(const EntityHandle& ent, Real tolerance, 
+                         bool always_remove_bb)
 {
-  return FilterClashes(ent.CreateFullView(), tolerance);
+  return FilterClashes(ent.CreateFullView(), tolerance, always_remove_bb);
 }
 
 
diff --git a/modules/mol/alg/src/filter_clashes.hh b/modules/mol/alg/src/filter_clashes.hh
index 87fd770311435ec4115311c342aa2bec7fd4309f..043510d9817b5c2260748ad4b3bda3478e2adfab 100644
--- a/modules/mol/alg/src/filter_clashes.hh
+++ b/modules/mol/alg/src/filter_clashes.hh
@@ -26,10 +26,12 @@ namespace ost { namespace mol { namespace alg {
 
 
 EntityView DLLEXPORT_OST_MOL_ALG FilterClashes(const EntityView& ent, 
-                                               Real tolerance=0.1);
+                                               Real tolerance=0.1,
+                                               bool always_remove_bb=false);
 
 EntityView DLLEXPORT_OST_MOL_ALG FilterClashes(const EntityHandle& ent, 
-                                               Real tolerance=0.1);
+                                               Real tolerance=0.1,
+                                               bool always_remove_bb=false);
 }}}