diff --git a/src/nlsr_im.hpp b/src/nlsr_im.hpp
index 6c09eb0..ccfe78f 100644
--- a/src/nlsr_im.hpp
+++ b/src/nlsr_im.hpp
@@ -5,34 +5,36 @@
 #include <ndn-cpp-dev/security/key-chain.hpp>
 #include <ndn-cpp-dev/util/scheduler.hpp>
 
-namespace nlsr {
+namespace nlsr
+{
 
-using namespace ndn;
-using namespace std;
+    using namespace ndn;
+    using namespace std;
 
-class Nlsr;
+    class Nlsr;
 
-class interestManager{
-public:	
-	interestManager()
-	{
-	}
-  void processInterest(Nlsr& pnlsr, const ndn::Name &name, 
-							                                   const ndn::Interest &interest);
-	void processInterestInfo(Nlsr& pnlsr, string& neighbor, 
-							                                   const ndn::Interest &interest);
-  void processInterestTimedOut(Nlsr& pnlsr, const ndn::Interest &interest);
-  void processInterestTimedOutInfo(Nlsr& pnlsr, string& neighbor,
-                                                 const ndn::Interest &interest);
-  void expressInterest(Nlsr& pnlsr,const string& interestNamePrefix, int scope, 
-                                                                   int seconds);
-  void sendScheduledInfoInterest(Nlsr& pnlsr, int seconds);
-	void scheduleInfoInterest(Nlsr& pnlsr, int seconds);
+    class interestManager
+    {
+    public:
+        interestManager()
+        {
+        }
+        void processInterest(Nlsr& pnlsr, const ndn::Name &name,
+                             const ndn::Interest &interest);
+        void processInterestInfo(Nlsr& pnlsr, string& neighbor,
+                                 const ndn::Interest &interest);
+        void processInterestTimedOut(Nlsr& pnlsr, const ndn::Interest &interest);
+        void processInterestTimedOutInfo(Nlsr& pnlsr, string& neighbor,
+                                         const ndn::Interest &interest);
+        void expressInterest(Nlsr& pnlsr,const string& interestNamePrefix, int scope,
+                             int seconds);
+        void sendScheduledInfoInterest(Nlsr& pnlsr, int seconds);
+        void scheduleInfoInterest(Nlsr& pnlsr, int seconds);
 
-private:	
+    private:
 
 
-};
+    };
 
 }//namespace nlsr
 
