diff --git a/src/query.cpp b/src/query.cpp
index 756de40..7a96731 100644
--- a/src/query.cpp
+++ b/src/query.cpp
@@ -23,7 +23,9 @@
 namespace ndns {
 
 Query::Query()
-  : m_interestLifetime(time::milliseconds(4000))
+  : m_queryType (QUERY_DNS)
+  , m_interestLifetime(time::milliseconds(4000))
+  , m_rrType(RR::NS)
 {
 }
 
@@ -31,8 +33,14 @@
 }
 
 
-void
-Query::fromWire(const Name &name, const Interest &interest)
+bool
+Query::fromInterest(const Name &name, const Interest &interest)
+{
+  return fromInterest(interest);
+}
+
+bool
+Query::fromInterest(const Interest& interest)
 {
   Name interestName;
   interestName = interest.getName();
@@ -51,40 +59,24 @@
 
   if (qtflag == -1)
     {
-      std::cerr << "There is no QueryType in the Interest Name: " << interestName << std::endl;
-      return;
+      std::cerr << "There is no QueryType in the Interest Name: "<< interestName << std::endl;
+      return false;
     }
   this->m_queryType = toQueryType(interestName.get(qtflag).toUri());
-  this->m_rrType = toRRType(interestName.get(len-1).toUri());
+  this->m_rrType = RR::toRRType(interestName.get(len-1).toUri());
   this->m_authorityZone = interestName.getPrefix(qtflag); //the DNS/DNS-R is not included
   this->m_interestLifetime = interest.getInterestLifetime();
-
-}
-
-template<bool T>
-size_t
-Query::wireEncode(EncodingImpl<T>& block) const
-{
-  size_t totalLength = 0;
-  totalLength += 0;
-
-
-  size_t totalLength = prependByteArrayBlock(block, tlv::Bytes,
-                                             m_key.get().buf(), m_key.get().size());
-  totalLength += m_keyName.wireEncode(block);
-  totalLength += block.prependVarNumber(totalLength);
-  totalLength += block.prependVarNumber(tlv::PublicKey);
-
-  return totalLength;
+  this->m_rrLabel = interestName.getSubName(qtflag+1, len-qtflag-2);
+  return true;
 }
 
 Interest
-Query::toWire() const
+Query::toInterest() const
 {
   Name name = this->m_authorityZone;
   name.append(toString(this->m_queryType));
   name.append(this->m_rrLabel);
-  name.append(toString(this->m_rrType));
+  name.append(RR::toString(this->m_rrType));
   Selectors selector;
   //selector.setMustBeFresh(true);
 
