diff --git a/rib/face-entry.hpp b/rib/face-entry.hpp
index c9eeb33..a6d468d 100644
--- a/rib/face-entry.hpp
+++ b/rib/face-entry.hpp
@@ -1,12 +1,12 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /**
- * Copyright (c) 2014,  Regents of the University of California,
- *                      Arizona Board of Regents,
- *                      Colorado State University,
- *                      University Pierre & Marie Curie, Sorbonne University,
- *                      Washington University in St. Louis,
- *                      Beijing Institute of Technology,
- *                      The University of Memphis
+ * Copyright (c) 2014-2015,  Regents of the University of California,
+ *                           Arizona Board of Regents,
+ *                           Colorado State University,
+ *                           University Pierre & Marie Curie, Sorbonne University,
+ *                           Washington University in St. Louis,
+ *                           Beijing Institute of Technology,
+ *                           The University of Memphis.
  *
  * This file is part of NFD (Named Data Networking Forwarding Daemon).
  * See AUTHORS.md for complete list of NFD authors and contributors.
@@ -50,12 +50,12 @@
 
 public:
   void
-  setExpirationEvent(const EventId eid)
+  setExpirationEvent(const scheduler::EventId eid)
   {
     m_expirationEvent = eid;
   }
 
-  const EventId&
+  const scheduler::EventId&
   getExpirationEvent() const
   {
     return m_expirationEvent;
@@ -69,7 +69,7 @@
   time::steady_clock::TimePoint expires;
 
 private:
-  EventId m_expirationEvent;
+  scheduler::EventId m_expirationEvent;
 };
 
 inline bool
diff --git a/rib/remote-registrator.hpp b/rib/remote-registrator.hpp
index 0d9eea3..bdd6ca9 100644
--- a/rib/remote-registrator.hpp
+++ b/rib/remote-registrator.hpp
@@ -1,12 +1,12 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /**
- * Copyright (c) 2014,  Regents of the University of California,
- *                      Arizona Board of Regents,
- *                      Colorado State University,
- *                      University Pierre & Marie Curie, Sorbonne University,
- *                      Washington University in St. Louis,
- *                      Beijing Institute of Technology,
- *                      The University of Memphis
+ * Copyright (c) 2014-2015,  Regents of the University of California,
+ *                           Arizona Board of Regents,
+ *                           Colorado State University,
+ *                           University Pierre & Marie Curie, Sorbonne University,
+ *                           Washington University in St. Louis,
+ *                           Beijing Institute of Technology,
+ *                           The University of Memphis.
  *
  * This file is part of NFD (Named Data Networking Forwarding Daemon).
  * See AUTHORS.md for complete list of NFD authors and contributors.
@@ -222,7 +222,7 @@
    * to Route Name. So it needs seperate sotrage instead
    * of storing within the RIB.
    */
-  typedef std::unordered_map<Name, EventId> RegisteredList;
+  typedef std::unordered_map<Name, scheduler::EventId> RegisteredList;
   typedef RegisteredList::iterator RegisteredEntryIt;
   typedef RegisteredList::value_type RegisteredEntry;
   RegisteredList m_regEntries;
diff --git a/rib/rib-manager.cpp b/rib/rib-manager.cpp
index 7d0f5b3..809b301 100644
--- a/rib/rib-manager.cpp
+++ b/rib/rib-manager.cpp
@@ -1,12 +1,12 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /**
- * Copyright (c) 2014,  Regents of the University of California,
- *                      Arizona Board of Regents,
- *                      Colorado State University,
- *                      University Pierre & Marie Curie, Sorbonne University,
- *                      Washington University in St. Louis,
- *                      Beijing Institute of Technology,
- *                      The University of Memphis
+ * Copyright (c) 2014-2015,  Regents of the University of California,
+ *                           Arizona Board of Regents,
+ *                           Colorado State University,
+ *                           University Pierre & Marie Curie, Sorbonne University,
+ *                           Washington University in St. Louis,
+ *                           Beijing Institute of Technology,
+ *                           The University of Memphis.
  *
  * This file is part of NFD (Named Data Networking Forwarding Daemon).
  * See AUTHORS.md for complete list of NFD authors and contributors.
@@ -298,10 +298,8 @@
       faceEntry.expires = time::steady_clock::now() + parameters.getExpirationPeriod();
 
       // Schedule a new event, the old one will be cancelled during rib insertion.
-      EventId eventId;
-      eventId = scheduler::schedule(parameters.getExpirationPeriod(),
-                                    bind(&RibManager::expireEntry,
-                                    this, shared_ptr<Interest>(), parameters));
+      scheduler::EventId eventId = scheduler::schedule(parameters.getExpirationPeriod(),
+          bind(&RibManager::expireEntry, this, shared_ptr<Interest>(), parameters));
       NFD_LOG_TRACE("Scheduled unregistration at: " << faceEntry.expires <<
                     " with EventId: " << eventId);
 
diff --git a/rib/rib-manager.hpp b/rib/rib-manager.hpp
index 181d210..e3750b1 100644
--- a/rib/rib-manager.hpp
+++ b/rib/rib-manager.hpp
@@ -1,12 +1,12 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /**
- * Copyright (c) 2014,  Regents of the University of California,
- *                      Arizona Board of Regents,
- *                      Colorado State University,
- *                      University Pierre & Marie Curie, Sorbonne University,
- *                      Washington University in St. Louis,
- *                      Beijing Institute of Technology,
- *                      The University of Memphis
+ * Copyright (c) 2014-2015,  Regents of the University of California,
+ *                           Arizona Board of Regents,
+ *                           Colorado State University,
+ *                           University Pierre & Marie Curie, Sorbonne University,
+ *                           Washington University in St. Louis,
+ *                           Beijing Institute of Technology,
+ *                           The University of Memphis.
  *
  * This file is part of NFD (Named Data Networking Forwarding Daemon).
  * See AUTHORS.md for complete list of NFD authors and contributors.
@@ -297,7 +297,7 @@
   static const Name FACES_LIST_DATASET_PREFIX;
 
   static const time::seconds ACTIVE_FACE_FETCH_INTERVAL;
-  EventId m_activeFaceFetchEvent;
+  scheduler::EventId m_activeFaceFetchEvent;
 
   typedef std::set<uint64_t> FaceIdSet;
   /** \brief contains FaceIds with one or more Routes in the RIB
