diff --git a/model/ndn_interestpacket.cc b/model/ndn_interestpacket.cc
index 66deaf2..bb3a878 100644
--- a/model/ndn_interestpacket.cc
+++ b/model/ndn_interestpacket.cc
@@ -24,60 +24,61 @@
 {
 namespace NDNabstraction
 {
-    InterestPacket::InterestPacket(unsigned char *name, uint32_t size):Packet ((uint8_t const *)name,size)
-    {
-        maxNameLength = 10240;
-    }
+  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); 
-    }
+  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);    
-    }
+  void 
+  InterestPacket::AddTimeout(uint32_t milliseconds)
+  {
+    TimeoutHeader tHeader (milliseconds);
+    AddHeader (tHeader);    
+  }
     
-    uint32_t
-    InterestPacket::GetTimeout(void)
-    {
-        TimeoutHeader tHeader;
-        PeekHeader(tHeader);
-        return tHeader.GetValue();
-    }
+  uint32_t
+  InterestPacket::GetTimeout(void)
+  {
+    TimeoutHeader tHeader;
+    PeekHeader(tHeader);
+    return tHeader.GetValue();
+  }
     
-    void
-    InterestPacket::RemoveTimeout(void)
-    {
-        TimeoutHeader tHeader;
-        RemoveHeader(tHeader);
-    }
+  void
+  InterestPacket::RemoveTimeout(void)
+  {
+    TimeoutHeader tHeader;
+    RemoveHeader(tHeader);
+  }
     
-    void 
-    InterestPacket::AddNonce(uint32_t nonce)
-    {
-        NonceHeader tHeader (nonce);
-        AddHeader (tHeader);
-    }
+  void 
+  InterestPacket::AddNonce(uint32_t nonce)
+  {
+    NonceHeader tHeader (nonce);
+    AddHeader (tHeader);
+  }
     
-    uint32_t
-    InterestPacket::GetNonce(void)
-    {
-        NonceHeader tHeader;
-        PeekHeader(tHeader);
-        return tHeader.GetValue();
-    }
+  uint32_t
+  InterestPacket::GetNonce(void)
+  {
+    NonceHeader tHeader;
+    PeekHeader(tHeader);
+    return tHeader.GetValue();
+  }
     
-    void
-    InterestPacket::RemoveNonce(void)
-    {
-        NonceHeader tHeader;
-        RemoveHeader(tHeader);
-    }
+  void
+  InterestPacket::RemoveNonce(void)
+  {
+    NonceHeader tHeader;
+    RemoveHeader(tHeader);
+  }
 }
 }
diff --git a/model/ndn_interestpacket.h b/model/ndn_interestpacket.h
index 0256132..51f2a9a 100644
--- a/model/ndn_interestpacket.h
+++ b/model/ndn_interestpacket.h
@@ -34,23 +34,25 @@
 {
 namespace NDNabstraction
 {
-    class InterestPacket : public Packet 
-    {
-        public: 
-            InterestPacket(unsigned char *name, uint32_t size);
+  
+  class InterestPacket : public Packet 
+  {
+  public: 
+    InterestPacket(const unsigned char *name, uint32_t size);
             
-            uint32_t GetName(unsigned char *name);
+    uint32_t GetName(unsigned char *name);
         
-            void AddTimeout(uint32_t milliseconds);
-            uint32_t GetTimeout(void);
-            void RemoveTimeout(void);
+    void AddTimeout(uint32_t milliseconds);
+    uint32_t GetTimeout(void);
+    void RemoveTimeout(void);
         
-            void AddNonce(uint32_t nonce);
-            uint32_t GetNonce(void);
-            void RemoveNonce(void);
+    void AddNonce(uint32_t nonce);
+    uint32_t GetNonce(void);
+    void RemoveNonce(void);
         
-            uint32_t maxNameLength;
-    };
+    uint32_t maxNameLength;
+  };
+  
 }
 }
 
diff --git a/model/ndn_namebuilder.cc b/model/ndn_namebuilder.cc
index 8f65647..e907e01 100644
--- a/model/ndn_namebuilder.cc
+++ b/model/ndn_namebuilder.cc
@@ -57,5 +57,10 @@
   return *this;
 }
 
+NameBuilder::operator const unsigned char* ()
+{
+  return m_value->buf;
+}
+  
 }
 }
diff --git a/model/ndn_namebuilder.h b/model/ndn_namebuilder.h
index 1b54bfe..1198471 100644
--- a/model/ndn_namebuilder.h
+++ b/model/ndn_namebuilder.h
@@ -37,6 +37,8 @@
   
   const ccn_charbuf* GetName () const;
   NameBuilder& operator () (const std::string &s);
+
+  operator const unsigned char* ();
 private:
   ccn_charbuf *m_value;
 };
diff --git a/model/ndn_stupidinterestgenerator.cc b/model/ndn_stupidinterestgenerator.cc
index 5bc1861..7c59f6c 100644
--- a/model/ndn_stupidinterestgenerator.cc
+++ b/model/ndn_stupidinterestgenerator.cc
@@ -163,8 +163,9 @@
         
         NameBuilder name;
 		name("prefix1")("prefix2")("filename");
+		
         const ccn_charbuf *output = name.GetName();
-        Ptr<InterestPacket> packet = Create<InterestPacket>(output->buf,(uint32_t)output->length);
+        Ptr<InterestPacket> packet = Create<InterestPacket>(name,(uint32_t)output->length);
         packet->AddTimeout(4000);
         UniformVariable var;
         packet->AddNonce(var.GetInteger(1,10000));
