diff --git a/daemon/table/fib.cpp b/daemon/table/fib.cpp
index 532ad97..7a3295a 100644
--- a/daemon/table/fib.cpp
+++ b/daemon/table/fib.cpp
@@ -35,7 +35,7 @@
     m_table.begin(), m_table.end(),
     bind(&predicate_FibEntry_eq_Name, _1, prefix));
   if (it != m_table.end()) return std::make_pair(*it, false);
-  
+
   shared_ptr<fib::Entry> entry = make_shared<fib::Entry>(prefix);
   m_table.push_back(entry);
   return std::make_pair(entry, true);
@@ -54,12 +54,32 @@
 shared_ptr<fib::Entry>
 Fib::findLongestPrefixMatch(const Name& prefix) const
 {
-  shared_ptr<fib::Entry> bestMatch = 
+  shared_ptr<fib::Entry> bestMatch =
     std::accumulate(m_table.begin(), m_table.end(), m_rootEntry,
     bind(&accumulate_FibEntry_longestPrefixMatch, _1, _2, prefix));
   return bestMatch;
 }
 
+shared_ptr<fib::Entry>
+Fib::findExactMatch(const Name& prefix) const
+{
+  std::list<shared_ptr<fib::Entry> >::const_iterator it =
+    std::find_if(m_table.begin(), m_table.end(),
+                 bind(&predicate_FibEntry_eq_Name, _1, prefix));
+
+  if (it != m_table.end())
+    {
+      return *it;
+    }
+  return shared_ptr<fib::Entry>();
+}
+
+void
+Fib::remove(const Name& prefix)
+{
+  m_table.remove_if(bind(&predicate_FibEntry_eq_Name, _1, prefix));
+}
+
 static inline void
 FibEntry_removeNextHop(shared_ptr<fib::Entry> entry,
   shared_ptr<Face> face)
diff --git a/daemon/table/fib.hpp b/daemon/table/fib.hpp
index 53a34c7..22d5222 100644
--- a/daemon/table/fib.hpp
+++ b/daemon/table/fib.hpp
@@ -17,20 +17,26 @@
 {
 public:
   Fib();
-  
+
   ~Fib();
-  
+
   /** \brief inserts a FIB entry for prefix
    *  If an entry for exact same prefix exists, that entry is returned.
    *  \return{ the entry, and true for new entry, false for existing entry }
    */
   std::pair<shared_ptr<fib::Entry>, bool>
   insert(const Name& prefix);
-  
+
   /// performs a longest prefix match
   shared_ptr<fib::Entry>
   findLongestPrefixMatch(const Name& prefix) const;
-  
+
+  shared_ptr<fib::Entry>
+  findExactMatch(const Name& prefix) const;
+
+  void
+  remove(const Name& prefix);
+
   /** \brief removes the NextHop record for face in all entrites
    *  This is usually invoked when face goes away.
    *  Removing all NextHops in a FIB entry will not remove the FIB entry.
