diff --git a/modules/mol/alg/pymod/wrap_mol_alg.cc b/modules/mol/alg/pymod/wrap_mol_alg.cc
index fa04f27d223da4a9e7aa02ff073e68db5f9a890f..fb68ece360a33a3729c11902f1df26a746bd43d8 100644
--- a/modules/mol/alg/pymod/wrap_mol_alg.cc
+++ b/modules/mol/alg/pymod/wrap_mol_alg.cc
@@ -141,5 +141,6 @@ BOOST_PYTHON_MODULE(_ost_mol_alg)
   
   def("FillClashingDistances",&fill_clashing_distances_wrapper);
   def("FillStereoChemicalParams",&fill_stereochemical_params_wrapper);
+  def("IsStandardResidue",&mol::alg::IsStandardResidue);
   
 }
\ No newline at end of file
diff --git a/modules/mol/alg/src/ldt.cc b/modules/mol/alg/src/ldt.cc
index d11ce8f22936c5063dbf0d4b0a1db6d966230a60..0b9610308ae2850f261ba5594dc988354afaae54 100644
--- a/modules/mol/alg/src/ldt.cc
+++ b/modules/mol/alg/src/ldt.cc
@@ -85,7 +85,7 @@ std::pair<int,int> compute_coverage (const EntityView& v,const GlobalDistanceLis
   {
     ResNum rnum = (*i)[0].GetFirstAtom().GetResNum();
     String rname = (*i)[0].GetFirstAtom().GetResidueName();
-    if (ost::conop::ResidueNameToOneLetterCode(rname)!='X') {
+    if (IsStandardResidue(rname)) {
       second++;
       if (vchain.FindResidue(rnum)) {
         first++;     
diff --git a/modules/mol/alg/src/local_dist_test.cc b/modules/mol/alg/src/local_dist_test.cc
index ed589a255a99f654bea0f8bf7df9712be365c55f..ecf9a61eb6e0e6da77d4c4f8624b35ccdb881566 100644
--- a/modules/mol/alg/src/local_dist_test.cc
+++ b/modules/mol/alg/src/local_dist_test.cc
@@ -1,6 +1,5 @@
 #include <ost/log.hh>
 #include <ost/mol/mol.hh>
-#include <ost/conop/amino_acids.hh>
 #include "local_dist_test.hh"
 #include <boost/concept_check.hpp>
 
@@ -235,6 +234,35 @@ std::pair<Real, Real> calc_overlap2(const seq::ConstSequenceHandle& ref_seq,
 
 }
 
+bool IsStandardResidue(String rn)
+{
+  String upper_rn=rn;
+  std::transform(rn.begin(),rn.end(),rn.begin(),toupper);
+  if (upper_rn == "ALA" ||    
+  upper_rn == "ARG" ||
+  upper_rn == "ASN" ||
+  upper_rn == "ASP" ||
+  upper_rn == "GLN" ||
+  upper_rn == "GLU" ||
+  upper_rn == "LYS" ||
+  upper_rn == "SER" ||
+  upper_rn == "CYS" ||      
+  upper_rn == "TYR" ||  
+  upper_rn == "TRP" || 
+  upper_rn == "THR" ||
+  upper_rn == "VAL" ||
+  upper_rn == "ILE" ||
+  upper_rn == "MET" ||
+  upper_rn == "LEU" ||  
+  upper_rn == "GLY" ||  
+  upper_rn == "PRO" ||  
+  upper_rn == "HIS" ||  
+  upper_rn == "PHE") {
+    return true;
+  }  
+  return false;
+}  
+
 bool UniqueAtomIdentifier::operator==(const UniqueAtomIdentifier& rhs) const
 {
   if (chain_ == rhs.GetChainName() && 
@@ -285,7 +313,7 @@ GlobalDistanceList CreateDistanceList(const EntityView& ref,Real max_dist)
  ResidueViewList ref_residues=ref.GetChainList()[0].GetResidueList();
  for (ResidueViewList::iterator i=ref_residues.begin(), e=ref_residues.end(); i!=e; ++i) {
    ResidueView rview = (*i);
-   if (ost::conop::ResidueNameToOneLetterCode(rview.GetName())!='X') {
+   if (IsStandardResidue(rview.GetName())) {
      ResidueDistanceList res_dist_list;
      AtomViewList ref_atoms=(*i).GetAtomList();
      AtomViewList within;
diff --git a/modules/mol/alg/src/local_dist_test.hh b/modules/mol/alg/src/local_dist_test.hh
index 8c757badd9c9e367c3ae3badea2733af47d1b7a9..74e0f4f29ca00b54340a683a036904d3eb66e596 100644
--- a/modules/mol/alg/src/local_dist_test.hh
+++ b/modules/mol/alg/src/local_dist_test.hh
@@ -85,6 +85,8 @@ Real DLLEXPORT_OST_MOL_ALG LocalDistTest(const ost::seq::AlignmentHandle& aln,
 Real DLLEXPORT_OST_MOL_ALG LDTHA(EntityView& v, const GlobalDistanceList& global_dist_list);
 
 GlobalDistanceList CreateDistanceList(const EntityView& ref,Real max_dist);
+bool IsStandardResidue(String rn);
+
 
 
 }}}