diff --git a/ndn-cpp/common.h b/ndn-cpp/common.h
index 99e8fae..a9c078b 100644
--- a/ndn-cpp/common.h
+++ b/ndn-cpp/common.h
@@ -47,15 +47,6 @@
 } // time
 } // ndn
 
-
-extern "C" {
-#include <ccn/ccn.h>
-#include <ccn/charbuf.h>
-#include <ccn/keystore.h>
-#include <ccn/uri.h>
-#include <ccn/bloom.h>
-#include <ccn/signing.h>
-}
 #include <vector>
 #include <boost/shared_ptr.hpp>
 #include <boost/exception/all.hpp>
diff --git a/ndn-cpp/interest.cc b/ndn-cpp/interest.cc
index 3825677..020a0ef 100644
--- a/ndn-cpp/interest.cc
+++ b/ndn-cpp/interest.cc
@@ -53,40 +53,6 @@
   m_publisherPublicKeyDigest = other.m_publisherPublicKeyDigest;
 }
 
-Interest::Interest (const ccn_parsed_interest *pi)
-  : m_maxSuffixComponents (Interest::ncomps)
-  , m_minSuffixComponents (Interest::ncomps)
-  , m_answerOriginKind (AOK_DEFAULT)
-  , m_interestLifetime (time::Seconds (-1.0))
-  , m_scope (NO_SCOPE)
-  , m_childSelector (CHILD_DEFAULT)
-{
-  if (pi != NULL)
-  {
-    m_maxSuffixComponents = pi->max_suffix_comps;
-    m_minSuffixComponents = pi->min_suffix_comps;
-    switch(pi->orderpref)
-      {
-      case 0: m_childSelector = CHILD_LEFT; break;
-      case 1: m_childSelector = CHILD_RIGHT; break;
-      default: m_childSelector = CHILD_DEFAULT; break;
-      }
-
-    switch(pi->answerfrom)
-    {
-      case 0x1: m_answerOriginKind = AOK_CS; break;
-      case 0x2: m_answerOriginKind = AOK_NEW; break;
-      case 0x3: m_answerOriginKind = AOK_DEFAULT; break;
-      case 0x4: m_answerOriginKind = AOK_STALE; break;
-      case 0x10: m_answerOriginKind = AOK_EXPIRE; break;
-      default: break;
-    }
-    m_scope = static_cast<Scope> (pi->scope);
-  }
-
-  /// @todo copy publisher key digest
-}
-
 bool
 Interest::operator == (const Interest &other)
 {
diff --git a/ndn-cpp/interest.h b/ndn-cpp/interest.h
index 1596b6d..7e778df 100644
--- a/ndn-cpp/interest.h
+++ b/ndn-cpp/interest.h
@@ -48,15 +48,6 @@
   Interest (const Interest &interest);
 
   /**
-   * @brief Create an interest based on ccn_parsed_interest data structure
-   * @param interest pointer to ccn_parsed_interest data structure
-   *
-   * This method will create an interest with empty name, since ccn_parsed_interest structure
-   * has limited amount of information
-   */
-  Interest (const ccn_parsed_interest *interest);
-
-  /**
    * @brief Set interest name
    * @param name name of the interest
    * @return reference to self (to allow method chaining)
