diff --git a/src/conf-file-processor.cpp b/src/conf-file-processor.cpp
index 1d3b781..ec1718b 100644
--- a/src/conf-file-processor.cpp
+++ b/src/conf-file-processor.cpp
@@ -27,8 +27,13 @@
 #include <ndn-cxx/name.hpp>
 #include <ndn-cxx/net/face-uri.hpp>
 
-#include <iostream>
+#include <boost/filesystem.hpp>
+#include <boost/property_tree/info_parser.hpp>
+
 #include <fstream>
+#include <iostream>
+
+namespace bf = boost::filesystem;
 
 namespace nlsr {
 
@@ -331,9 +336,8 @@
     std::string stateDir = section.get<std::string>("state-dir");
     if (bf::exists(stateDir)) {
       if (bf::is_directory(stateDir)) {
-
-        // copying nlsr.conf file to a user define directory for possible modification
-        std::string conFileDynamic = (bf::path(stateDir) / "nlsr.conf").c_str();
+        // copying nlsr.conf file to a user-defined directory for possible modification
+        std::string conFileDynamic = (bf::path(stateDir) / "nlsr.conf").string();
 
         if (m_confFileName == conFileDynamic) {
           std::cerr << "Please use nlsr.conf stored at another location "
@@ -347,32 +351,38 @@
 
         m_confParam.setConfFileNameDynamic(conFileDynamic);
         try {
-          bf::copy_file(m_confFileName, conFileDynamic, bf::copy_option::overwrite_if_exists);
+          bf::copy_file(m_confFileName, conFileDynamic,
+#if BOOST_VERSION >= 107400
+                        bf::copy_options::overwrite_existing
+#else
+                        bf::copy_option::overwrite_if_exists
+#endif
+                        );
         }
         catch (const bf::filesystem_error& e) {
           std::cerr << "Error copying conf file to the state directory: " << e.what() << std::endl;
+          return false;
         }
 
-        std::string testFileName = (bf::path(stateDir) / "test.seq").c_str();
+        std::string testFileName = (bf::path(stateDir) / "test.seq").string();
         std::ofstream testOutFile(testFileName);
         if (testOutFile) {
           m_confParam.setStateFileDir(stateDir);
         }
         else {
-          std::cerr << "User does not have read and write permission on the state directory";
-          std::cerr << std::endl;
+          std::cerr << "NLSR does not have read/write permission on the state directory" << std::endl;
           return false;
         }
         testOutFile.close();
         remove(testFileName.c_str());
       }
       else {
-        std::cerr << "Provided: " << stateDir << "is not a directory" << std::endl;
+        std::cerr << "Provided path '" << stateDir << "' is not a directory" << std::endl;
         return false;
       }
     }
     else {
-      std::cerr << "Provided state directory <" << stateDir << "> does not exist" << std::endl;
+      std::cerr << "Provided state directory '" << stateDir << "' does not exist" << std::endl;
       return false;
     }
   }
diff --git a/src/conf-file-processor.hpp b/src/conf-file-processor.hpp
index f7270ba..735a0c1 100644
--- a/src/conf-file-processor.hpp
+++ b/src/conf-file-processor.hpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2020,  The University of Memphis,
+ * Copyright (c) 2014-2021,  The University of Memphis,
  *                           Regents of the University of California,
  *                           Arizona Board of Regents.
  *
@@ -26,12 +26,10 @@
 #include "conf-parameter.hpp"
 
 #include <boost/algorithm/string.hpp>
-#include <boost/property_tree/info_parser.hpp>
-#include <boost/filesystem.hpp>
+#include <boost/property_tree/ptree.hpp>
 
 namespace nlsr {
 
-namespace bf = boost::filesystem;
 using ConfigSection = boost::property_tree::ptree;
 
 /*! \brief A class containing methods to parse an NLSR configuration file
@@ -125,4 +123,5 @@
 };
 
 } // namespace nlsr
+
 #endif // NLSR_CONF_FILE_PROCESSOR_HPP
