diff --git a/src/nlsr_conf_param.hpp b/src/nlsr_conf_param.hpp
index b2413ba..7fc51f2 100644
--- a/src/nlsr_conf_param.hpp
+++ b/src/nlsr_conf_param.hpp
@@ -13,21 +13,24 @@
 
     public:
         ConfParameter()
-            :chronosyncSyncPrefix("ndn/nlsr/sync")
-            ,chronosyncLsaPrefix("/ndn/nlsr/LSA")
-        {
-            isStrictHierchicalKeyCheck=0;
-            interestRetryNumber=3;
-            interestResendTime=5;
-            infoInterestInterval=60;
-            lsaRefreshTime=1800;
-            routerDeadInterval=3600;
-            maxFacesPerPrefix=0;
-            tunnelType=0;
-            detailedLogging=0;
-            debugging=0;
-            isHyperbolicCalc=0;
-        }
+            : chronosyncSyncPrefix("ndn/nlsr/sync")
+            , chronosyncLsaPrefix("/ndn/nlsr/LSA")
+            , rootKeyPrefix("/ndn/keys")
+            , isStrictHierchicalKeyCheck(0)
+            , interestRetryNumber(3)
+            , interestResendTime(5)
+            , infoInterestInterval(60)
+            , lsaRefreshTime(1800)
+            , routerDeadInterval(3600)
+            , maxFacesPerPrefix(0)
+            , tunnelType(0)
+            , detailedLogging(0)
+            , debugging(0)
+            , isHyperbolicCalc(0)
+            , seqFileDir()
+            , corR(0)
+            , corTheta(0)
+        {}
 
         void setRouterName(const string& rn)
         {
@@ -69,6 +72,16 @@
             return routerPrefix;
         }
 
+        string getRootKeyPrefix()
+        {
+            return rootKeyPrefix;
+        }
+
+        void setRootKeyPrefix(string rkp)
+        {
+            rootKeyPrefix=rkp;
+        }
+
         void setInterestRetryNumber(int irn)
         {
             interestRetryNumber=irn;
@@ -130,6 +143,16 @@
             return logDir;
         }
 
+        void setSeqFileDir(string ssfd)
+        {
+            seqFileDir=ssfd;
+        }
+
+        string getSeqFileDir()
+        {
+            return seqFileDir;
+        }
+
         void setDetailedLogging(int dl)
         {
             detailedLogging=dl;
@@ -200,6 +223,16 @@
             return chronosyncSyncPrefix;
         }
 
+        void setChronosyncLsaPrefix(string clp)
+        {
+            chronosyncLsaPrefix=clp;
+        }
+
+        string getChronosyncLsaPrefix()
+        {
+            return chronosyncLsaPrefix;
+        }
+
         int getInfoInterestInterval()
         {
             return infoInterestInterval;
@@ -221,6 +254,8 @@
         string chronosyncSyncPrefix;
         string chronosyncLsaPrefix;
 
+        string rootKeyPrefix;
+
         int interestRetryNumber;
         int interestResendTime;
         int infoInterestInterval;
@@ -229,6 +264,7 @@
 
         int maxFacesPerPrefix;
         string logDir;
+        string seqFileDir;
         string logFile;
         int detailedLogging;
         int debugging;
