diff --git a/model/annotated-topology-reader.cc b/model/annotated-topology-reader.cc
index 86918f7..76880a5 100644
--- a/model/annotated-topology-reader.cc
+++ b/model/annotated-topology-reader.cc
@@ -65,24 +65,24 @@
     
 AnnotatedTopologyReader::AnnotatedTopologyReader (const std::string &path)
   : m_path (path)
-  , m_ulx (0)
-  , m_uly (0)
-  , m_lrx (100.0)
-  , m_lry (100.0)
+  // , m_ulx (0)
+  // , m_uly (0)
+  // , m_lrx (100.0)
+  // , m_lry (100.0)
 {
   NS_LOG_FUNCTION (this);
 }
     
-void
-AnnotatedTopologyReader::SetBoundingBox (double ulx, double uly, double lrx, double lry)
-{
-  NS_LOG_FUNCTION (this << ulx << uly << lrx << lry);
+// void
+// AnnotatedTopologyReader::SetBoundingBox (double ulx, double uly, double lrx, double lry)
+// {
+//   NS_LOG_FUNCTION (this << ulx << uly << lrx << lry);
   
-  m_ulx = ulx;
-  m_uly = uly;
-  m_lrx = lrx;
-  m_lry = lry;
-}
+//   m_ulx = ulx;
+//   m_uly = uly;
+//   m_lrx = lrx;
+//   m_lry = lry;
+// }
 
 AnnotatedTopologyReader::~AnnotatedTopologyReader ()
 {
@@ -280,7 +280,7 @@
           link.GetToNetDevice ()->GetAttribute ("TxQueue", txQueueTo);
           NS_ASSERT (txQueueTo.Get<DropTailQueue> () != 0);
         
-          txQueueTo.  Get<DropTailQueue> ()->SetAttribute ("MaxPackets", StringValue (link.GetAttribute("QueueSizeNode2")));
+          txQueueTo.Get<DropTailQueue> ()->SetAttribute ("MaxPackets", StringValue (link.GetAttribute("QueueSizeNode2")));
         }
     }
 }
diff --git a/model/annotated-topology-reader.h b/model/annotated-topology-reader.h
index cfe5233..d97209b 100644
--- a/model/annotated-topology-reader.h
+++ b/model/annotated-topology-reader.h
@@ -59,11 +59,11 @@
   virtual
   NodeContainer Read (void);
     
-    /**
-   * \brief Set bounding box for the nodes
-   */
-  void
-  SetBoundingBox (double ulx, double uly, double lrx, double lry);
+  // /**
+  //  * \brief Set bounding box for the nodes
+  //  */
+  // void
+  // SetBoundingBox (double ulx, double uly, double lrx, double lry);
 
   /**
    * \brief Assign IPv4 addresses to all links
@@ -87,14 +87,14 @@
   void ApplyOspfMetric ();
     
 private:
-    AnnotatedTopologyReader (const AnnotatedTopologyReader&);
-    AnnotatedTopologyReader& operator= (const AnnotatedTopologyReader&);
+  AnnotatedTopologyReader (const AnnotatedTopologyReader&);
+  AnnotatedTopologyReader& operator= (const AnnotatedTopologyReader&);
 
   std::string m_path;
-  double m_ulx;
-  double m_uly;
-  double m_lrx;
-  double m_lry;
+  // double m_ulx;
+  // double m_uly;
+  // double m_lrx;
+  // double m_lry;
 };
 }
 
diff --git a/model/ccnx-fib.cc b/model/ccnx-fib.cc
index 5bb81c3..24f236f 100644
--- a/model/ccnx-fib.cc
+++ b/model/ccnx-fib.cc
@@ -180,11 +180,11 @@
 CcnxFib::LongestPrefixMatch (const CcnxInterestHeader &interest) const
 {
   const CcnxNameComponents &name = interest.GetName ();
-  for (size_t componentsCount = name.GetComponents ().size ();
-       componentsCount >= 0;
+  for (size_t componentsCount = name.GetComponents ().size ()+1;
+       componentsCount > 0;
        componentsCount--)
     {
-      CcnxNameComponents subPrefix (name.GetSubComponents (componentsCount));
+      CcnxNameComponents subPrefix (name.GetSubComponents (componentsCount-1));
       CcnxFibEntryContainer::type::iterator match = m_fib.find (subPrefix);
       if (match != m_fib.end())
         return match;
