wait to be verified
diff --git a/src/query.hpp b/src/query.hpp
index 48ef464..61b1cff 100644
--- a/src/query.hpp
+++ b/src/query.hpp
@@ -36,6 +36,42 @@
     QUERY_DNS_R
   };
 
+  static std::string
+  toString(const QueryType& qType)
+  {
+    std::string label;
+    switch (qType)
+      {
+      case QUERY_DNS:
+        label = "DNS";
+        break;
+      case QUERY_DNS_R:
+        label = "DNS-R";
+        break;
+      default:
+        label = "Default";
+        break;
+      }
+    return label;
+
+  }
+
+  static const QueryType
+  toQueryType(const std::string& str)
+  {
+    QueryType atype;
+    if (str == "DNS") {
+      atype = QUERY_DNS;
+    }
+    else if (str == "DNS-R") {
+      atype = QUERY_DNS_R;
+    }
+    else {
+      atype = QUERY_DNS;
+    }
+    return atype;
+  }
+
   Query();
 
   virtual ~Query();
@@ -72,49 +108,14 @@
     m_rrLabel = rrLabel;
   }
 
-  const RRType& getRrType() const {
+  const RR::RRType& getRrType() const {
     return m_rrType;
   }
 
-  void setRrType(const RRType& rrType) {
+  void setRrType(const RR::RRType& rrType) {
     m_rrType = rrType;
   }
 
-  static std::string
-  toString(QueryType qType)
-  {
-    std::string label;
-    switch (qType)
-      {
-      case QUERY_DNS:
-        label = "DNS";
-        break;
-      case QUERY_DNS_R:
-        label = "DNS-R";
-        break;
-      default:
-        label = "Default";
-        break;
-      }
-    return label;
-
-  }
-
-  static const QueryType
-  toQueryType(const std::string& str)
-  {
-    QueryType atype;
-    if (str == "DNS") {
-      atype = QUERY_DNS;
-    }
-    else if (str == "DNS-R") {
-      atype = QUERY_DNS_R;
-    }
-    else {
-      atype = QUERY_DNS;
-    }
-    return atype;
-  }
 
 private:
   template<bool T>
@@ -122,30 +123,38 @@
   wireEncode(EncodingImpl<T> & block) const;
 
 public:
-
-  const Block&
-  wireEncode() const;
-
-  void
-  wireDecode(const Block& wire);
-
-
   Interest
-  toWire() const;
+  toInterest() const;
 
-  void
-  fromWire(const Name &name, const Interest& interest);
+  bool
+  fromInterest(const Name &name, const Interest& interest);
+
+  bool
+  fromInterest(const Interest& interest);
+
 
 public:
   Name m_authorityZone;
   enum QueryType m_queryType;
   time::milliseconds m_interestLifetime;
   Name m_rrLabel;
-  enum RRType m_rrType;
+  enum RR::RRType m_rrType;
 
   mutable Block m_wire;
 };
 
+
+inline std::ostream&
+operator<<(std::ostream& os, const Query& query)
+{
+  os<<"Query: authorityZone="<<query.getAuthorityZone().toUri()
+    <<" queryType="<<Query::toString(query.getQueryType())
+    <<" rrLabel="<<query.getRrLabel().toUri()
+    <<" rrType="<<RR::toString(query.getRrType());
+  return os;
+}
+
+
 } // namespace ndns
 } // namespace ndn