diff --git a/modules/mol/base/doc/query.rst b/modules/mol/base/doc/query.rst
index 16e9a3a02ec090145aab816ecd0f016be70e7996..99c2392fe40673dc70d182175db703c4887614a1 100644
--- a/modules/mol/base/doc/query.rst
+++ b/modules/mol/base/doc/query.rst
@@ -219,6 +219,9 @@ This index is the same for views and handles.
 **peptide** (bool): Whether the residue is :attr:`peptide linking
 <ResidueHandle.peptide_linking>`.
 
+**nucleotide** (bool): Whether the residue is :attr:`nucleotide linking
+<ResidueHandle.nucleotide_linking>`.
+
 **protein** (bool): Whether the residue is considered to be
 :attr:`part of a connected protein <ResidueHandle.is_protein>`.
 
diff --git a/modules/mol/base/src/property_id.cc b/modules/mol/base/src/property_id.cc
index 467227294144e5cdfcb9afe3f0d79f4927324f86..ad2f9033320bfaf56715c72c60e48f6d60c48840 100644
--- a/modules/mol/base/src/property_id.cc
+++ b/modules/mol/base/src/property_id.cc
@@ -50,6 +50,7 @@ struct Properties : public boost::spirit::symbols<Prop> {
       ("abfac", Prop(Prop::ABFAC, Prop::FLOAT, Prop::ATOM))
       ("rbfac", Prop(Prop::RBFAC, Prop::FLOAT, Prop::RESIDUE))
       ("peptide", Prop(Prop::PEPTIDE, Prop::INT, Prop::RESIDUE))
+      ("nucleotide", Prop(Prop::NUCLEOTIDE, Prop::INT, Prop::RESIDUE))
       ("rindex", Prop(Prop::RINDEX, Prop::INT, Prop::RESIDUE))
       ("protein", Prop(Prop::PROTEIN, Prop::INT, Prop::RESIDUE))
       ("ligand", Prop(Prop::LIGAND, Prop::INT, Prop::RESIDUE))
@@ -111,7 +112,9 @@ String Prop::GetName() const
     case ABFAC:
       return "abfac";
     case PEPTIDE:
-      return "peptide";      
+      return "peptide";
+    case NUCLEOTIDE:
+      return "nucleotide";
     case ACHARGE:
       return "acharge";
     case RINDEX:
diff --git a/modules/mol/base/src/property_id.hh b/modules/mol/base/src/property_id.hh
index 7fec20853d02b62dd19adb6259ba583297255c7f..a3b24ac42d1fbbf9f7795e4b70496166e2a0f309 100644
--- a/modules/mol/base/src/property_id.hh
+++ b/modules/mol/base/src/property_id.hh
@@ -39,9 +39,9 @@ public:
   /// the GenericProp 'propname' at the atom, residue and chain level
   /// respectively.
   typedef enum {
-    RNAME, ANAME, CNAME, ELE, RNUM, ANUM, AX, AY, AZ, OCC, AINDEX, RTYPE, ISHETATM,
-    RBFAC, ABFAC, PEPTIDE, ACHARGE, RINDEX, PROTEIN, LIGAND, WATER, WITHIN, 
-    UNDEF, CUSTOM
+    RNAME, ANAME, CNAME, ELE, RNUM, ANUM, AX, AY, AZ, OCC, AINDEX, RTYPE,
+    ISHETATM, RBFAC, ABFAC, PEPTIDE, NUCLEOTIDE, ACHARGE, RINDEX, PROTEIN,
+    LIGAND, WATER, WITHIN, UNDEF, CUSTOM
   } ID;
   
   typedef enum {
diff --git a/modules/mol/base/src/query_state.cc b/modules/mol/base/src/query_state.cc
index 2b18845d3342153ff3d8a06e0f0b741c0908aa78..40e09a53dbc36fa7a41dc62b48fe464c8f193261 100644
--- a/modules/mol/base/src/query_state.cc
+++ b/modules/mol/base/src/query_state.cc
@@ -204,6 +204,10 @@ boost::logic::tribool QueryState::EvalResidue(const ResidueImplPtr& r) {
       case Prop::PEPTIDE:
         int_value=r->GetChemClass().IsPeptideLinking();
         s_[*i] = cmp_num<int>(ss.comp_op,int_value,boost::get<int>(ss.param));        
+        break; 
+      case Prop::NUCLEOTIDE:
+        int_value=r->GetChemClass().IsNucleotideLinking();
+        s_[*i] = cmp_num<int>(ss.comp_op,int_value,boost::get<int>(ss.param));        
         break;        
       case Prop::RBFAC:
         // This is ugly! Outcome is the same for a prefiltered view as it is for