diff --git a/src/nlsr_rt.hpp b/src/nlsr_rt.hpp
index 22e3cfe..fb9a060 100644
--- a/src/nlsr_rt.hpp
+++ b/src/nlsr_rt.hpp
@@ -7,42 +7,43 @@
 
 #include "nlsr_rte.hpp"
 
-namespace nlsr {
-
-class Nlsr;
-class NextHop;
-
-using namespace std;
-
-class RoutingTable
+namespace nlsr
 {
-public:
-	RoutingTable()
-		: NO_NEXT_HOP(-12345)
-	{
-	}
-	void calculate(Nlsr& pnlsr);
-	void addNextHop(string destRouter, NextHop& nh);
-	void printRoutingTable();
 
-	void addNextHopToDryTable(string destRouter, NextHop& nh);
-	void printDryRoutingTable();
-	std::pair<RoutingTableEntry&, bool> findRoutingTableEntry(string destRouter);
-	void scheduleRoutingTableCalculation(Nlsr& pnlsr);
+    class Nlsr;
+    class NextHop;
 
-private:
-	void calculateLsRoutingTable(Nlsr& pnlsr);
-	void calculateHypRoutingTable(Nlsr& pnlsr);
-	void calculateHypDryRoutingTable(Nlsr&pnlsr);
-	
-	void clearRoutingTable();
-	void clearDryRoutingTable();
+    using namespace std;
 
-	const int NO_NEXT_HOP;
-	
-	std::list< RoutingTableEntry > rTable;
-	std::list< RoutingTableEntry > dryTable;
-};
+    class RoutingTable
+    {
+    public:
+        RoutingTable()
+            : NO_NEXT_HOP(-12345)
+        {
+        }
+        void calculate(Nlsr& pnlsr);
+        void addNextHop(string destRouter, NextHop& nh);
+        void printRoutingTable();
+
+        void addNextHopToDryTable(string destRouter, NextHop& nh);
+        void printDryRoutingTable();
+        std::pair<RoutingTableEntry&, bool> findRoutingTableEntry(string destRouter);
+        void scheduleRoutingTableCalculation(Nlsr& pnlsr);
+
+    private:
+        void calculateLsRoutingTable(Nlsr& pnlsr);
+        void calculateHypRoutingTable(Nlsr& pnlsr);
+        void calculateHypDryRoutingTable(Nlsr&pnlsr);
+
+        void clearRoutingTable();
+        void clearDryRoutingTable();
+
+        const int NO_NEXT_HOP;
+
+        std::list< RoutingTableEntry > rTable;
+        std::list< RoutingTableEntry > dryTable;
+    };
 
 }//namespace nlsr
 
