diff --git a/src/hello-protocol.cpp b/src/hello-protocol.cpp
index 1af254e..09f05b6 100644
--- a/src/hello-protocol.cpp
+++ b/src/hello-protocol.cpp
@@ -74,6 +74,8 @@
 void
 HelloProtocol::scheduleInterest(uint32_t seconds)
 {
+  _LOG_DEBUG("Scheduling HELLO Interests in " << ndn::time::seconds(seconds));
+
   m_scheduler.scheduleEvent(ndn::time::seconds(seconds),
                             ndn::bind(&HelloProtocol::sendScheduledInterest, this, seconds));
 }
@@ -150,14 +152,8 @@
   else if ((status == Adjacent::STATUS_ACTIVE) &&
            (infoIntTimedOutCount == m_nlsr.getConfParameter().getInterestRetryNumber())) {
     m_nlsr.getAdjacencyList().setStatusOfNeighbor(neighbor, Adjacent::STATUS_INACTIVE);
-    m_nlsr.incrementAdjBuildCount();
-    if (m_nlsr.getIsBuildAdjLsaSheduled() == false) {
-      _LOG_DEBUG("Scheduling scheduledAdjLsaBuild");
-      m_nlsr.setIsBuildAdjLsaSheduled(true);
-      // event here
-      m_scheduler.scheduleEvent(m_adjLsaBuildInterval,
-                                ndn::bind(&Lsdb::scheduledAdjLsaBuild, &m_nlsr.getLsdb()));
-    }
+
+    m_nlsr.getLsdb().scheduleAdjLsaBuild();
   }
 }
 
@@ -194,15 +190,7 @@
     _LOG_DEBUG("Old Status: " << oldStatus << " New Status: " << newStatus);
     // change in Adjacency list
     if ((oldStatus - newStatus) != 0) {
-      m_nlsr.incrementAdjBuildCount();
-      // Need to schedule event for Adjacency LSA building
-      if (m_nlsr.getIsBuildAdjLsaSheduled() == false) {
-        _LOG_DEBUG("Scheduling scheduledAdjLsaBuild");
-        m_nlsr.setIsBuildAdjLsaSheduled(true);
-        // event here
-        m_scheduler.scheduleEvent(m_adjLsaBuildInterval,
-                                  ndn::bind(&Lsdb::scheduledAdjLsaBuild, &m_nlsr.getLsdb()));
-      }
+      m_nlsr.getLsdb().scheduleAdjLsaBuild();
     }
   }
 }
@@ -280,14 +268,8 @@
       if (status == Adjacent::STATUS_ACTIVE) {
         adjacent->setStatus(Adjacent::STATUS_INACTIVE);
       }
-      m_nlsr.incrementAdjBuildCount();
-      if (m_nlsr.getIsBuildAdjLsaSheduled() == false) {
-        _LOG_DEBUG("Scheduling scheduledAdjLsaBuild");
-        m_nlsr.setIsBuildAdjLsaSheduled(true);
-        // event here
-        m_scheduler.scheduleEvent(m_adjLsaBuildInterval,
-                                  ndn::bind(&Lsdb::scheduledAdjLsaBuild, &m_nlsr.getLsdb()));
-      }
+
+      m_nlsr.getLsdb().scheduleAdjLsaBuild();
     }
   }
 }
diff --git a/src/hello-protocol.hpp b/src/hello-protocol.hpp
index 25868bd..a307a94 100644
--- a/src/hello-protocol.hpp
+++ b/src/hello-protocol.hpp
@@ -37,7 +37,6 @@
   HelloProtocol(Nlsr& nlsr, ndn::Scheduler& scheduler)
     : m_nlsr(nlsr)
     , m_scheduler(scheduler)
-    , m_adjLsaBuildInterval(static_cast<uint32_t>(ADJ_LSA_BUILD_INTERVAL_DEFAULT))
   {
   }
 
@@ -53,18 +52,6 @@
   void
   processInterest(const ndn::Name& name, const ndn::Interest& interest);
 
-  void
-  setAdjLsaBuildInterval(uint32_t interval)
-  {
-    m_adjLsaBuildInterval = ndn::time::seconds(interval);
-  }
-
-  const ndn::time::seconds&
-  getAdjLsaBuildInterval() const
-  {
-    return m_adjLsaBuildInterval;
-  }
-
 private:
   void
   processInterestTimedOut(const ndn::Interest& interest);
@@ -96,8 +83,6 @@
 
   static const std::string INFO_COMPONENT;
   static const std::string NLSR_COMPONENT;
-
-  ndn::time::seconds m_adjLsaBuildInterval;
 };
 
 } //namespace nlsr
diff --git a/src/lsdb.cpp b/src/lsdb.cpp
index 79fbd82..8c41c9f 100644
--- a/src/lsdb.cpp
+++ b/src/lsdb.cpp
@@ -429,9 +429,23 @@
 }
 
 void
-Lsdb::scheduledAdjLsaBuild()
+Lsdb::scheduleAdjLsaBuild()
 {
-  _LOG_DEBUG("scheduledAdjLsaBuild Called");
+  m_nlsr.incrementAdjBuildCount();
+
+  if (m_nlsr.getIsBuildAdjLsaSheduled() == false) {
+    _LOG_DEBUG("Scheduling Adjacency LSA build in " << m_adjLsaBuildInterval);
+
+    m_scheduler.scheduleEvent(m_adjLsaBuildInterval, ndn::bind(&Lsdb::buildAdjLsa, this));
+    m_nlsr.setIsBuildAdjLsaSheduled(true);
+  }
+}
+
+void
+Lsdb::buildAdjLsa()
+{
+  _LOG_TRACE("buildAdjLsa called");
+
   m_nlsr.setIsBuildAdjLsaSheduled(false);
   if (m_nlsr.getAdjacencyList().isAdjLsaBuildable(m_nlsr)) {
     int adjBuildCount = m_nlsr.getAdjBuildCount();
@@ -454,7 +468,7 @@
     int schedulingTime = m_nlsr.getConfParameter().getInterestRetryNumber() *
                          m_nlsr.getConfParameter().getInterestResendTime();
     m_scheduler.scheduleEvent(ndn::time::seconds(schedulingTime),
-                              ndn::bind(&Lsdb::scheduledAdjLsaBuild, this));
+                              ndn::bind(&Lsdb::buildAdjLsa, this));
   }
 }
 
diff --git a/src/lsdb.hpp b/src/lsdb.hpp
index da41a9d..34d7562 100644
--- a/src/lsdb.hpp
+++ b/src/lsdb.hpp
@@ -27,6 +27,7 @@
 #include <ndn-cxx/security/key-chain.hpp>
 #include <ndn-cxx/util/time.hpp>
 
+#include "conf-parameter.hpp"
 #include "lsa.hpp"
 #include "test-access-control.hpp"
 
@@ -46,6 +47,7 @@
     , m_sync(sync)
     , m_hasSyncPrefixBeenRegistered(false)
     , m_lsaRefreshTime(0)
+    , m_adjLsaBuildInterval(static_cast<uint32_t>(ADJ_LSA_BUILD_INTERVAL_DEFAULT))
   {
   }
 
@@ -91,8 +93,9 @@
   writeCorLsdbLog();
 
   //function related to Adj LSDB
+
   void
-  scheduledAdjLsaBuild();
+  scheduleAdjLsaBuild();
 
   bool
   buildAndInstallOwnAdjLsa();
@@ -112,6 +115,18 @@
   getAdjLsdb();
 
   void
+  setAdjLsaBuildInterval(uint32_t interval)
+  {
+    m_adjLsaBuildInterval = ndn::time::seconds(interval);
+  }
+
+  const ndn::time::seconds&
+  getAdjLsaBuildInterval() const
+  {
+    return m_adjLsaBuildInterval;
+  }
+
+  void
   writeAdjLsdbLog();
 
   void
@@ -134,6 +149,9 @@
   bool
   doesCoordinateLsaExist(const ndn::Name& key);
 
+  void
+  buildAdjLsa();
+
   bool
   addAdjLsa(AdjLsa& alsa);
 
@@ -261,6 +279,8 @@
 
   static const ndn::time::seconds GRACE_PERIOD;
   static const steady_clock::TimePoint DEFAULT_LSA_RETRIEVAL_DEADLINE;
+
+  ndn::time::seconds m_adjLsaBuildInterval;
 };
 
 }//namespace nlsr
diff --git a/src/nlsr.cpp b/src/nlsr.cpp
index 07eb43e..eb06be0 100644
--- a/src/nlsr.cpp
+++ b/src/nlsr.cpp
@@ -140,16 +140,17 @@
   _LOG_DEBUG("Default NLSR identity: " << m_defaultIdentity);
   setInfoInterestFilter();
   setLsaInterestFilter();
+
+  // Set event intervals
+  setFirstHelloInterval(m_confParam.getFirstHelloInterval());
+  m_nlsrLsdb.setAdjLsaBuildInterval(m_confParam.getAdjLsaBuildInterval());
+  m_routingTable.setRoutingCalcInterval(m_confParam.getRoutingCalcInterval());
+
   m_nlsrLsdb.buildAndInstallOwnNameLsa();
   m_nlsrLsdb.buildAndInstallOwnCoordinateLsa();
 
   registerKeyPrefix();
 
-  // Set event intervals
-  setFirstHelloInterval(m_confParam.getFirstHelloInterval());
-  m_helloProtocol.setAdjLsaBuildInterval(m_confParam.getAdjLsaBuildInterval());
-  m_routingTable.setRoutingCalcInterval(m_confParam.getRoutingCalcInterval());
-
   m_helloProtocol.scheduleInterest(m_firstHelloInterval);
 
   // Need to set direct neighbors' costs to 0 for hyperbolic routing
diff --git a/src/nlsr.hpp b/src/nlsr.hpp
index 639487f..7e73ebc 100644
--- a/src/nlsr.hpp
+++ b/src/nlsr.hpp
@@ -366,8 +366,6 @@
   Fib m_fib;
   NamePrefixTable m_namePrefixTable;
   SyncLogicHandler m_syncLogicHandler;
-
-PUBLIC_WITH_TESTS_ELSE_PRIVATE:
   HelloProtocol m_helloProtocol;
 
 private:
diff --git a/src/route/routing-table.cpp b/src/route/routing-table.cpp
index 371d977..343767a 100644
--- a/src/route/routing-table.cpp
+++ b/src/route/routing-table.cpp
@@ -53,10 +53,13 @@
           pnlsr.getConfParameter().getRouterPrefix().toUri() + "/" + "adjacency",
           std::string("adjacency"))) {
       if (pnlsr.getIsBuildAdjLsaSheduled() != 1) {
-        _LOG_DEBUG("CLearing old routing table .....");
+        _LOG_TRACE("Clearing old routing table");
         clearRoutingTable();
         // for dry run options
         clearDryRoutingTable();
+
+        _LOG_DEBUG("Calculating routing table");
+
         // calculate Link State routing
         if ((pnlsr.getConfParameter().getHyperbolicState() == HYPERBOLIC_STATE_OFF)
             || (pnlsr.getConfParameter().getHyperbolicState() == HYPERBOLIC_STATE_DRY_RUN)) {
@@ -156,6 +159,8 @@
 RoutingTable::scheduleRoutingTableCalculation(Nlsr& pnlsr)
 {
   if (pnlsr.getIsRouteCalculationScheduled() != true) {
+    _LOG_DEBUG("Scheduling routing table calculation in " << m_routingCalcInterval);
+
     m_scheduler.scheduleEvent(m_routingCalcInterval,
                               ndn::bind(&RoutingTable::calculate, this, ndn::ref(pnlsr)));
 
diff --git a/tests/test-nlsr.cpp b/tests/test-nlsr.cpp
index 01480d9..ec53820 100644
--- a/tests/test-nlsr.cpp
+++ b/tests/test-nlsr.cpp
@@ -98,10 +98,10 @@
 
   nlsr.initialize();
 
-  const HelloProtocol& hello = nlsr.m_helloProtocol;
+  const Lsdb& lsdb = nlsr.getLsdb();
   const RoutingTable& rt = nlsr.getRoutingTable();
 
-  BOOST_CHECK_EQUAL(hello.getAdjLsaBuildInterval(), ndn::time::seconds(3));
+  BOOST_CHECK_EQUAL(lsdb.getAdjLsaBuildInterval(), ndn::time::seconds(3));
   BOOST_CHECK_EQUAL(nlsr.getFirstHelloInterval(), 6);
   BOOST_CHECK_EQUAL(rt.getRoutingCalcInterval(), ndn::time::seconds(9));
 }
