diff --git a/src/nlsr_rte.cpp b/src/nlsr_rte.cpp
index 59325f0..f96da11 100644
--- a/src/nlsr_rte.cpp
+++ b/src/nlsr_rte.cpp
@@ -3,23 +3,24 @@
 
 #include "nlsr_rte.hpp"
 
-namespace nlsr{
-
-using namespace std;
-
-ostream&
-operator<<(ostream& os, RoutingTableEntry &rte)
+namespace nlsr
 {
-	os<<"Destination: "<<rte.getDestination()<<endl;	
-	os<<"Nexthops: "<<endl;
-	int i=1;
-	std::list< NextHop > nhl = rte.getNhl().getNextHopList();
-	for( std::list<NextHop>::iterator it=nhl.begin(); 
-	                                            it!= nhl.end() ; it++,i++)
-	{
-		os <<"  Nexthop "<<i<<": "<<(*it)<<endl;
-	}
-	return os;
-}
+
+    using namespace std;
+
+    ostream&
+    operator<<(ostream& os, RoutingTableEntry &rte)
+    {
+        os<<"Destination: "<<rte.getDestination()<<endl;
+        os<<"Nexthops: "<<endl;
+        int i=1;
+        std::list< NextHop > nhl = rte.getNhl().getNextHopList();
+        for( std::list<NextHop>::iterator it=nhl.begin();
+                it!= nhl.end() ; it++,i++)
+        {
+            os <<"  Nexthop "<<i<<": "<<(*it)<<endl;
+        }
+        return os;
+    }
 
 }//namespace nlsr
