diff --git a/model/interest-packet.cc b/model/interest-packet.cc
new file mode 100644
index 0000000..350095a
--- /dev/null
+++ b/model/interest-packet.cc
@@ -0,0 +1,87 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2011 University of California, Los Angeles
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Ilya Moiseenko <iliamo@cs.ucla.edu>
+ */
+
+#include "interest-packet.h"
+
+namespace ns3
+{
+namespace NDNabstraction
+{
+  InterestPacket::InterestPacket ()
+  {
+  }
+  // InterestPacket::InterestPacket(const unsigned char *name, uint32_t size)
+  //   :Packet(name,size)
+  // {
+  //   maxNameLength = 10240;
+  // }
+    
+  // uint32_t 
+  // InterestPacket::GetName(unsigned char *name)
+  // {
+  //   //uint32_t Packet::CopyData (uint8_t *buffer, uint32_t size) const
+  //   return CopyData((uint8_t*) name, maxNameLength); 
+  // }
+    
+  // void 
+  // InterestPacket::AddTimeout(uint32_t milliseconds)
+  // {
+  //   TimeoutHeader tHeader (milliseconds);
+  //   AddHeader (tHeader);    
+  // }
+    
+  // uint32_t
+  // InterestPacket::GetTimeout(void)
+  // {
+  //   TimeoutHeader tHeader;
+  //   PeekHeader(tHeader);
+  //   return tHeader.GetValue();
+  // }
+    
+  // void
+  // InterestPacket::RemoveTimeout(void)
+  // {
+  //   TimeoutHeader tHeader;
+  //   RemoveHeader(tHeader);
+  // }
+    
+  // void 
+  // InterestPacket::AddNonce(uint32_t nonce)
+  // {
+  //   NonceHeader tHeader (nonce);
+  //   AddHeader (tHeader);
+  // }
+    
+  // uint32_t
+  // InterestPacket::GetNonce(void)
+  // {
+  //   NonceHeader tHeader;
+  //   PeekHeader(tHeader);
+  //   return tHeader.GetValue();
+  // }
+    
+  // void
+  // InterestPacket::RemoveNonce(void)
+  // {
+  //   NonceHeader tHeader;
+  //   RemoveHeader(tHeader);
+  // }
+}
+}
