diff --git a/src/nlsr_adjacent.cpp b/src/nlsr_adjacent.cpp
index 6cc4db0..f636e5c 100644
--- a/src/nlsr_adjacent.cpp
+++ b/src/nlsr_adjacent.cpp
@@ -8,35 +8,35 @@
 namespace nlsr
 {
 
-    using namespace std;
+  using namespace std;
 
-    Adjacent::Adjacent(const string& an, int cf, double lc, int s, int iton)
-    {
-        adjacentName=an;
-        connectingFace=cf;
-        linkCost=lc;
-        status=s;
-        interestTimedOutNo=iton;
-    }
+  Adjacent::Adjacent(const string& an, int cf, double lc, int s, int iton)
+  {
+    adjacentName=an;
+    connectingFace=cf;
+    linkCost=lc;
+    status=s;
+    interestTimedOutNo=iton;
+  }
 
-    bool
-    Adjacent::isAdjacentEqual(Adjacent& adj)
-    {
-        return ( adjacentName == adj.getAdjacentName() ) &&
-               ( connectingFace == adj.getConnectingFace() ) &&
-               (std::abs(linkCost - adj.getLinkCost()) <
-                std::numeric_limits<double>::epsilon()) ;
-    }
+  bool
+  Adjacent::isAdjacentEqual(Adjacent& adj)
+  {
+    return ( adjacentName == adj.getAdjacentName() ) &&
+           ( connectingFace == adj.getConnectingFace() ) &&
+           (std::abs(linkCost - adj.getLinkCost()) <
+            std::numeric_limits<double>::epsilon()) ;
+  }
 
-    std::ostream&
-    operator << (std::ostream &os, Adjacent &adj)
-    {
-        cout<<"Adjacent : "<< adj.getAdjacentName()	<< endl;
-        cout<<"Connecting Face: "<<adj.getConnectingFace()<<endl;
-        cout<<"Link Cost: "<<adj.getLinkCost()<<endl;
-        cout<<"Status: "<<adj.getStatus()<<endl;
-        cout<<"Interest Timed out: "<<adj.getInterestTimedOutNo()<<endl;
-        return os;
-    }
+  std::ostream&
+  operator << (std::ostream &os, Adjacent &adj)
+  {
+    cout<<"Adjacent : "<< adj.getAdjacentName()	<< endl;
+    cout<<"Connecting Face: "<<adj.getConnectingFace()<<endl;
+    cout<<"Link Cost: "<<adj.getLinkCost()<<endl;
+    cout<<"Status: "<<adj.getStatus()<<endl;
+    cout<<"Interest Timed out: "<<adj.getInterestTimedOutNo()<<endl;
+    return os;
+  }
 
 } //namespace nlsr
