diff --git a/src/interest.cpp b/src/interest.cpp
index 017711a..a7ba973 100644
--- a/src/interest.cpp
+++ b/src/interest.cpp
@@ -34,15 +34,13 @@
               "Interest::Error must inherit from tlv::Error");
 
 Interest::Interest()
-  : m_scope(-1)
-  , m_interestLifetime(time::milliseconds::min())
+  : m_interestLifetime(time::milliseconds::min())
   , m_selectedDelegationIndex(INVALID_SELECTED_DELEGATION_INDEX)
 {
 }
 
 Interest::Interest(const Name& name)
   : m_name(name)
-  , m_scope(-1)
   , m_interestLifetime(time::milliseconds::min())
   , m_selectedDelegationIndex(INVALID_SELECTED_DELEGATION_INDEX)
 {
@@ -50,28 +48,11 @@
 
 Interest::Interest(const Name& name, const time::milliseconds& interestLifetime)
   : m_name(name)
-  , m_scope(-1)
   , m_interestLifetime(interestLifetime)
   , m_selectedDelegationIndex(INVALID_SELECTED_DELEGATION_INDEX)
 {
 }
 
-Interest::Interest(const Name& name,
-                   const Selectors& selectors,
-                   int scope,
-                   const time::milliseconds& interestLifetime,
-                   uint32_t nonce)
-  : m_name(name)
-  , m_selectors(selectors)
-  , m_scope(scope)
-  , m_interestLifetime(interestLifetime)
-  , m_selectedDelegationIndex(INVALID_SELECTED_DELEGATION_INDEX)
-{
-  if (nonce > 0) {
-    setNonce(nonce);
-  }
-}
-
 Interest::Interest(const Block& wire)
 {
   wireDecode(wire);
@@ -241,7 +222,6 @@
   //                Name
   //                Selectors?
   //                Nonce
-  //                Scope?
   //                InterestLifetime?
   //                Link?
   //                SelectedDelegation?
@@ -269,12 +249,6 @@
                                                     getInterestLifetime().count());
     }
 
-  // Scope
-  if (getScope() >= 0)
-    {
-      totalLength += prependNonNegativeIntegerBlock(block, tlv::Scope, getScope());
-    }
-
   // Nonce
   getNonce(); // to ensure that Nonce is properly set
   totalLength += block.prependBlock(m_nonce);
@@ -327,7 +301,6 @@
   //                Name
   //                Selectors?
   //                Nonce
-  //                Scope?
   //                InterestLifetime?
   //                Link?
   //                SelectedDelegation?
@@ -350,15 +323,6 @@
   // Nonce
   m_nonce = m_wire.get(tlv::Nonce);
 
-  // Scope
-  val = m_wire.find(tlv::Scope);
-  if (val != m_wire.elements_end())
-    {
-      m_scope = readNonNegativeInteger(*val);
-    }
-  else
-    m_scope = -1;
-
   // InterestLifetime
   val = m_wire.find(tlv::InterestLifetime);
   if (val != m_wire.elements_end())
@@ -502,10 +466,6 @@
     os << delim << "ndn.MustBeFresh=" << interest.getMustBeFresh();
     delim = '&';
   }
-  if (interest.getScope() >= 0) {
-    os << delim << "ndn.Scope=" << interest.getScope();
-    delim = '&';
-  }
   if (interest.getInterestLifetime() >= time::milliseconds::zero()
       && interest.getInterestLifetime() != DEFAULT_INTEREST_LIFETIME) {
     os << delim << "ndn.InterestLifetime=" << interest.getInterestLifetime().count();
