diff --git a/interest.rst b/interest.rst
index 7ebd49e..35b54ae 100644
--- a/interest.rst
+++ b/interest.rst
@@ -7,7 +7,7 @@
 
 ::
 
-    Interest ::= INTEREST-TYPE TLV-LENGTH 
+    Interest ::= INTEREST-TYPE TLV-LENGTH
                    Name
                    Selectors?
                    Nonce
@@ -16,7 +16,7 @@
 
 ``Name`` and ``Nonce`` are the only two two required elements in an Interest packet.
 Selectors are optional elements that further qualify Data that may match the Interest.
-They are used for discovering and selecting the Data that matches best to what the application wants. Selectors are placed right after the Name to facilitate implementations that may use continuous memory block of Name and Selectors TLVs together as the index for PIT lookup. By using a TLV to group all the Selectors, an implementation can easily skip them to find Nonce, which is used together with Name to identify looping Interests. 
+They are used for discovering and selecting the Data that matches best to what the application wants. Selectors are placed right after the Name to facilitate implementations that may use continuous memory block of Name and Selectors TLVs together as the index for PIT lookup. By using a TLV to group all the Selectors, an implementation can easily skip them to find Nonce, which is used together with Name to identify looping Interests.
 If Selectors TLV is present in the Interest, it MUST contain at least one selector.
 
 The two other optional elements, Scope and InterestLifetime, are referred to as *Guiders*.
@@ -36,7 +36,7 @@
 
 ::
 
-    Selectors ::= SELECTORS-TYPE TLV-LENGTH 
+    Selectors ::= SELECTORS-TYPE TLV-LENGTH
                     MinSuffixComponents?
                     MaxSuffixComponents?
                     PublisherPublicKeyLocator?
@@ -55,11 +55,11 @@
     MaxSuffixComponents ::= MAX-SUFFIX-COMPONENTS-TYPE TLV-LENGTH
                               nonNegativeInteger
 
-When needed, ``MinSuffixComponents`` and ``MaxSuffixComponents`` allow a data consumer to indicate whether the Name in the Interest is the full name including the digest, or the full name except for the digest, or the content it is seeking has a known range of legitimate component counts. 
-These two parameters refer to the number of name components beyond those in the prefix, and counting the implicit digest, that may occur in the matching Data. 
+When needed, ``MinSuffixComponents`` and ``MaxSuffixComponents`` allow a data consumer to indicate whether the Name in the Interest is the full name including the digest, or the full name except for the digest, or the content it is seeking has a known range of legitimate component counts.
+These two parameters refer to the number of name components beyond those in the prefix, and counting the implicit digest, that may occur in the matching Data.
 The default for ``MinSuffixComponents`` is 0 and for ``MaxSuffixComponents`` is effectively infinite, meaning that any Data whose name starts with the prefix is a match.  Often only one of these will be needed to get the desired effect.
 
- 
+
 PublisherPublicKeyLocator
 +++++++++++++++++++++++++
 
@@ -104,7 +104,7 @@
 
 ::
 
-    ChildSelector ::= CHILD-SELECTOR-TYPE TLV-LENGTH 
+    ChildSelector ::= CHILD-SELECTOR-TYPE TLV-LENGTH
                         nonNegativeInteger
 
 Often a given Interest can match more than one Data within a given content store.
@@ -114,9 +114,9 @@
 Here leftmost and rightmost refer to the least and greatest components according to the canonical NDN name component ordering (:ref:`Name Section<name>`).
 This ordering is only done at the level of the name hierarchy one past the name prefix.
 
-For example, assuming in the name hierarchy the component immediately after the name prefix  is the version number, whose next level is the segment number, then setting ChildSelector to be 1 will retrieve the rightmost version number (i.e., the latest version) and the leftmost segment number (i.e., the first segment). However, this selection is only done with respect to a single content store, not globally. Additional rounds that exclude the earlier versions may be used to explore other content stores for newer versions. 
+For example, assuming in the name hierarchy the component immediately after the name prefix  is the version number, whose next level is the segment number, then setting ChildSelector to be 1 will retrieve the rightmost version number (i.e., the latest version) and the leftmost segment number (i.e., the first segment). However, this selection is only done with respect to a single content store, not globally. Additional rounds that exclude the earlier versions may be used to explore other content stores for newer versions.
 In this case, the use of ChildSelector does not change the multi-round outcome, but it decreases the number of rounds needed to converge to an answer.
- 
+
 MustBeFresh
 +++++++++++
 
@@ -125,7 +125,7 @@
    MustBeFresh ::= MUST-BE-FRESH-TYPE TLV-LENGTH(=0)
 
 This selector is encoded with Type and Length but no Value part.
-When it is absent from an Interest packet, the router can respond with a Data packet from its content store whose FreshnessPeriod is either still valid or expired. 
+When it is absent from an Interest packet, the router can respond with a Data packet from its content store whose FreshnessPeriod is either still valid or expired.
 When it is present in an Interest packet, the router should not return Data packet from its content store whose FreshnessPeriod has expired.
 
 The FreshnessPeriod carried in each Data packet (:ref:`Data Section<data>`) is set by the original producer.  It starts counting down when the Data packet arrives at a node. Consequently if a node is N hops away from the original producer, it may not consider the Data stale until N *X* FreshnessPeriod after the Data is produced.
@@ -159,11 +159,11 @@
 
 This value limits how far the Interest may propagate.
 Scope 0 prevents propagation beyond the local NDN daemon (even to other applications on the same host). Scope 1 limits propagation to the applications on the originating host.
-Scope 2 limits propagation to no further than the next node. 
+Scope 2 limits propagation to no further than the next node.
 Other values are not defined at this time, and will cause the Interest packet to be dropped.
 
 Note that Scope is not a hop count---the value is not decremented as the Interest is forwarded.
- 
+
 InterestLifetime
 ++++++++++++++++
 
@@ -171,7 +171,7 @@
 
     InterestLifetime ::= INTEREST-LIFETIME-TYPE TLV-LENGTH nonNegativeInteger
 
-``InterestLifetime`` indicates the (approximate) time remaining before the Interest times out. 
+``InterestLifetime`` indicates the (approximate) time remaining before the Interest times out.
 The value is the number of milliseconds.  The timeout is relative to the arrival time of the Interest at the current node.
 
 Nodes that forward Interests may decrease the lifetime to account for the time spent in the node before forwarding, but are not required to do so. It is recommended that these adjustments be done only for relatively large delays (measured in seconds).
@@ -179,25 +179,3 @@
 It is the application that sets the value for ``InterestLifetime``.
 If the ``InterestLifetime`` element is omitted, a default value of 4 seconds is used (4000).
 The missing element may be added before forwarding.
-
-Changes from CCNx
-~~~~~~~~~~~~~~~~~
-
-- ``Nonce`` is changed from optional to required.
-
-- ``PublisherPublicKeyDigest`` is replaced by ``PublisherPublicKeyLocator``.
-
-- ``AnswerOriginKind`` is simplified from 4bits to a 1-bit ``MustBeFresh``.
-
-- ``FaceID`` has been removed.
-
-- ``InterestLifetime`` changes the unit to the number of milliseconds.
-
-- Removed Bloom Filter from Exclude.
-
-- Changed default semantics of staleness.
-
-  Specifically, NDN-TLV Interest without any selectors will bring any data that matches the name, and only when ``MustBeFresh`` selector is enabled it will try to honor freshness, specified in Data packets. 
-  With Binary XML encoded Interests, the default behavior was to bring "fresh" data and return "stale" data only when ``AnswerOriginKind`` was set to 3.
-
-  Application developers must be aware of this change, reexamine the Interest expression code, and enable ``MustBeFresh`` selector when necessary.
