Correcting everything to the stage that everything compiles
diff --git a/model/ccnx-fib.h b/model/ccnx-fib.h
index 4410b59..2bd131c 100644
--- a/model/ccnx-fib.h
+++ b/model/ccnx-fib.h
@@ -150,6 +150,8 @@
 class CcnxFibEntry : public SimpleRefCount<CcnxFibEntry>
 {
 public:
+  class NoFaces {};
+  
   /**
    * \brief Constructor
    * \param prefix Prefix for the FIB entry
@@ -163,16 +165,22 @@
    * \brief Update status of FIB next hop
    * \param status Status to set on the FIB entry
    */
-  void UpdateStatus (const CcnxFace &face, CcnxFibFaceMetric::Status status);
+  void UpdateStatus (Ptr<CcnxFace> face, CcnxFibFaceMetric::Status status);
 
-  // /**
-  //  * \brief Add or update routing metric of FIB next hop
-  //  *
-  //  * Initial status of the next hop is set to YELLOW
-  //  */
-  // void AddOrUpdateRoutingMetric (Ptr<CcnxFace> face, int32_t metric);
+  /**
+   * \brief Add or update routing metric of FIB next hop
+   *
+   * Initial status of the next hop is set to YELLOW
+   */
+  void AddOrUpdateRoutingMetric (Ptr<CcnxFace> face, int32_t metric);
 
   /**
+   * @brief Update RTT averages for the face
+   */
+  void
+  UpdateFaceRtt (Ptr<CcnxFace> face, const Time &sample);
+  
+  /**
    * \brief Get prefix for the FIB entry
    */
   const CcnxNameComponents&
@@ -180,9 +188,11 @@
 
   /**
    * \brief Find "best route" candidate, skipping `skip' first candidates (modulo # of faces)
+   *
+   * throws CcnxFibEntry::NoFaces if m_faces.size()==0
    */
-  Ptr<CcnxFace>
-    FindBestCandidate (int skip = 0) const;
+  const CcnxFibFaceMetric &
+  FindBestCandidate (uint32_t skip = 0) const;
 	
 private:
   friend std::ostream& operator<< (std::ostream& os, const CcnxFibEntry &entry);