diff --git a/ndn-cpp/Interest.hpp b/ndn-cpp/Interest.hpp
index 23f7d1f..2c6ee3e 100644
--- a/ndn-cpp/Interest.hpp
+++ b/ndn-cpp/Interest.hpp
@@ -8,10 +8,14 @@
 
 #include <vector>
 #include "Name.hpp"
+#include "PublisherPublicKeyDigest.hpp"
 #include "c/Interest.h"
 
 namespace ndn {
   
+/**
+ * An ExcludeEntry holds an ndn_ExcludeType, and if it is a COMPONENT, it holds the component value.
+ */
 class ExcludeEntry {
 public:
   /**
@@ -33,7 +37,7 @@
   /**
    * Set the type in the excludeEntryStruct and to point to this component, without copying any memory.
    * WARNING: The resulting pointer in excludeEntryStruct is invalid after a further use of this object which could reallocate memory.
-   * @param excludeEntryStruct the C ndn_NameComponent struct to receive the pointer.
+   * @param excludeEntryStruct the C ndn_NameComponent struct to receive the pointer
    */
   void get(struct ndn_ExcludeEntry &excludeEntryStruct) const 
   {
@@ -53,6 +57,9 @@
   std::vector<unsigned char> component_; /**< only used if type_ is ndn_Exclude_COMPONENT */
 }; 
   
+/**
+ * An Exclude holds a vector of ExcludeEntry.
+ */
 class Exclude {
 public:
   /**
@@ -68,14 +75,14 @@
   const ExcludeEntry &getEntry(unsigned int i) const { return entries_[i]; }
   
   /**
-   * Set the excludeStruct to point to the entries in this exclude, without copying any memory.
+   * Set the excludeStruct to point to the entries in this Exclude, without copying any memory.
    * WARNING: The resulting pointers in excludeStruct are invalid after a further use of this object which could reallocate memory.
-   * @param excludeStruct a C ndn_Exclude struct where the entries array is already allocated.
+   * @param excludeStruct a C ndn_Exclude struct where the entries array is already allocated
    */
   void get(struct ndn_Exclude &excludeStruct) const;
   
   /**
-   * Clear this exclude, and set the entries by copying from the ndn_Exclude struct.
+   * Clear this Exclude, and set the entries by copying from the ndn_Exclude struct.
    * @param excludeStruct a C ndn_Exclude struct
    */
   void set(struct ndn_Exclude &excludeStruct);
@@ -107,6 +114,9 @@
 	std::vector<ExcludeEntry> entries_;
 };
 
+/**
+ * An Interest holds a Name and other fields for an interest.
+ */
 class Interest {
 public:    
   void encode(std::vector<unsigned char> &output, WireFormat &wireFormat) const 
@@ -148,7 +158,8 @@
   
   int getMaxSuffixComponents() const { return maxSuffixComponents_; }
   
-  const std::vector<unsigned char> getPublisherPublicKeyDigest() const { return publisherPublicKeyDigest_; }
+  PublisherPublicKeyDigest &getPublisherPublicKeyDigest() { return publisherPublicKeyDigest_; }
+  const PublisherPublicKeyDigest &getPublisherPublicKeyDigest() const { return publisherPublicKeyDigest_; }
 
   Exclude &getExclude() { return exclude_; }
   const Exclude &getExclude() const { return exclude_; }
@@ -173,8 +184,6 @@
   
   void setMaxSuffixComponents(int value) { maxSuffixComponents_ = value; }
   
-  void setPublisherPublicKeyDigest(const std::vector<unsigned char> &value) { publisherPublicKeyDigest_ = value; }
-
   void setChildSelector(int value) { childSelector_ = value; }
 
   void setAnswerOriginKind(int value) { answerOriginKind_ = value; }
@@ -190,7 +199,7 @@
   Name name_;
 	int minSuffixComponents_;
 	int maxSuffixComponents_;	
-	std::vector<unsigned char> publisherPublicKeyDigest_;
+	PublisherPublicKeyDigest publisherPublicKeyDigest_;
   Exclude exclude_;
 	int childSelector_;
 	int answerOriginKind_;
