diff --git a/tools/nfdc/command-arguments.hpp b/tools/nfdc/command-arguments.hpp
index a949f99..164a672 100644
--- a/tools/nfdc/command-arguments.hpp
+++ b/tools/nfdc/command-arguments.hpp
@@ -31,7 +31,6 @@
 
 #include <ndn-cxx/encoding/nfd-constants.hpp>
 
-#include <boost/any.hpp>
 #include <boost/logic/tribool.hpp>
 
 namespace nfd {
@@ -43,19 +42,9 @@
 
 /** \brief contains named command arguments
  */
-class CommandArguments : public std::map<std::string, boost::any>
+class CommandArguments : public std::map<std::string, ndn::any>
 {
 public:
-  /** \return the argument value, or a default value if the argument is omitted on command line
-   */
-  template<typename T>
-  T
-  get(const std::string& key, const T& defaultValue = T()) const
-  {
-    auto i = find(key);
-    return i == end() ? defaultValue : boost::any_cast<T>(i->second);
-  }
-
   /** \return the argument value, or nullopt if the argument is omitted on command line
    */
   template<typename T>
@@ -63,10 +52,16 @@
   getOptional(const std::string& key) const
   {
     auto i = find(key);
-    if (i == end()) {
-      return nullopt;
-    }
-    return boost::any_cast<T>(i->second);
+    return i == end() ? nullopt : ndn::make_optional(ndn::any_cast<T>(i->second));
+  }
+
+  /** \return the argument value, or a default value if the argument is omitted on command line
+   */
+  template<typename T>
+  T
+  get(const std::string& key, const T& defaultValue = T()) const
+  {
+    return getOptional<T>(key).value_or(defaultValue);
   }
 
   /** \brief get an optional boolean argument as tribool
@@ -76,10 +71,7 @@
   getTribool(const std::string& key) const
   {
     auto value = getOptional<bool>(key);
-    if (value) {
-      return *value;
-    }
-    return boost::logic::indeterminate;
+    return value ? boost::logic::tribool(*value) : boost::logic::indeterminate;
   }
 };
 
