diff --git a/ndn-cxx/util/cf-releaser-osx.hpp b/ndn-cxx/detail/cf-releaser-osx.hpp
similarity index 94%
rename from ndn-cxx/util/cf-releaser-osx.hpp
rename to ndn-cxx/detail/cf-releaser-osx.hpp
index e344d0c..516b2e4 100644
--- a/ndn-cxx/util/cf-releaser-osx.hpp
+++ b/ndn-cxx/detail/cf-releaser-osx.hpp
@@ -19,8 +19,8 @@
  * See AUTHORS.md for complete list of ndn-cxx authors and contributors.
  */
 
-#ifndef NDN_UTIL_CF_RELEASER_OSX_HPP
-#define NDN_UTIL_CF_RELEASER_OSX_HPP
+#ifndef NDN_DETAIL_CF_RELEASER_OSX_HPP
+#define NDN_DETAIL_CF_RELEASER_OSX_HPP
 
 #include "ndn-cxx/detail/common.hpp"
 
@@ -31,7 +31,7 @@
 #include <CoreFoundation/CoreFoundation.h>
 
 namespace ndn {
-namespace util {
+namespace detail {
 
 /**
  * @brief Helper class to wrap CoreFoundation object pointers
@@ -144,7 +144,7 @@
   T m_typeRef;
 };
 
-} // namespace util
+} // namespace detail
 } // namespace ndn
 
-#endif // NDN_UTIL_CF_RELEASER_OSX_HPP
+#endif // NDN_DETAIL_CF_RELEASER_OSX_HPP
diff --git a/ndn-cxx/util/cf-string-osx.cpp b/ndn-cxx/detail/cf-string-osx.cpp
similarity index 96%
rename from ndn-cxx/util/cf-string-osx.cpp
rename to ndn-cxx/detail/cf-string-osx.cpp
index 2592a7f..ea63fc7 100644
--- a/ndn-cxx/util/cf-string-osx.cpp
+++ b/ndn-cxx/detail/cf-string-osx.cpp
@@ -19,10 +19,10 @@
  * See AUTHORS.md for complete list of ndn-cxx authors and contributors.
  */
 
-#include "ndn-cxx/util/cf-string-osx.hpp"
+#include "ndn-cxx/detail/cf-string-osx.hpp"
 
 namespace ndn {
-namespace util {
+namespace detail {
 namespace cfstring {
 
 CFReleaser<CFStringRef>
@@ -67,5 +67,5 @@
 }
 
 } // namespace cfstring
-} // namespace util
+} // namespace detail
 } // namespace ndn
diff --git a/ndn-cxx/util/cf-string-osx.hpp b/ndn-cxx/detail/cf-string-osx.hpp
similarity index 90%
rename from ndn-cxx/util/cf-string-osx.hpp
rename to ndn-cxx/detail/cf-string-osx.hpp
index f354e01..ddd79aa 100644
--- a/ndn-cxx/util/cf-string-osx.hpp
+++ b/ndn-cxx/detail/cf-string-osx.hpp
@@ -19,8 +19,8 @@
  * See AUTHORS.md for complete list of ndn-cxx authors and contributors.
  */
 
-#ifndef NDN_UTIL_CF_STRING_OSX_HPP
-#define NDN_UTIL_CF_STRING_OSX_HPP
+#ifndef NDN_DETAIL_CF_STRING_OSX_HPP
+#define NDN_DETAIL_CF_STRING_OSX_HPP
 
 #include "ndn-cxx/detail/common.hpp"
 
@@ -28,7 +28,7 @@
 #error "This file should not be included ..."
 #endif
 
-#include "ndn-cxx/util/cf-releaser-osx.hpp"
+#include "ndn-cxx/detail/cf-releaser-osx.hpp"
 
 /**
  * @file
@@ -37,7 +37,7 @@
  */
 
 namespace ndn {
-namespace util {
+namespace detail {
 namespace cfstring {
 
 /**
@@ -62,7 +62,7 @@
 toStdString(CFStringRef cfStr);
 
 } // namespace cfstring
-} // namespace util
+} // namespace detail
 } // namespace ndn
 
-#endif // NDN_UTIL_CF_STRING_OSX_HPP
+#endif // NDN_DETAIL_CF_STRING_OSX_HPP
diff --git a/ndn-cxx/net/impl/network-monitor-impl-osx.cpp b/ndn-cxx/net/impl/network-monitor-impl-osx.cpp
index 13d28d8..59ef9b0 100644
--- a/ndn-cxx/net/impl/network-monitor-impl-osx.cpp
+++ b/ndn-cxx/net/impl/network-monitor-impl-osx.cpp
@@ -51,9 +51,9 @@
  */
 
 #include "ndn-cxx/net/impl/network-monitor-impl-osx.hpp"
-#include "ndn-cxx/net/network-address.hpp"
 #include "ndn-cxx/name.hpp"
-#include "ndn-cxx/util/cf-string-osx.hpp"
+#include "ndn-cxx/detail/cf-string-osx.hpp"
+#include "ndn-cxx/net/network-address.hpp"
 #include "ndn-cxx/util/logger.hpp"
 
 #include <ifaddrs.h>      // for getifaddrs()
@@ -71,7 +71,7 @@
 namespace ndn {
 namespace net {
 
-using util::CFReleaser;
+using detail::CFReleaser;
 
 class IfAddrs : noncopyable
 {
@@ -221,7 +221,7 @@
   size_t count = CFArrayGetCount(interfaces);
   for (size_t i = 0; i != count; ++i) {
     auto ifName = (CFStringRef)CFArrayGetValueAtIndex(interfaces, i);
-    ifNames.insert(util::cfstring::toStdString(ifName));
+    ifNames.insert(detail::cfstring::toStdString(ifName));
   }
   return ifNames;
 }
@@ -248,7 +248,7 @@
 NetworkMonitorImplOsx::getInterfaceState(const NetworkInterface& netif) const
 {
   CFReleaser<CFStringRef> linkName =
-    util::cfstring::fromStdString("State:/Network/Interface/" + netif.getName() + "/Link");
+    detail::cfstring::fromStdString("State:/Network/Interface/" + netif.getName() + "/Link");
 
   CFReleaser<CFDictionaryRef> dict =
     (CFDictionaryRef)SCDynamicStoreCopyValue(m_scStore.get(), linkName.get());
@@ -404,7 +404,7 @@
 
   size_t count = CFArrayGetCount(changedKeys);
   for (size_t i = 0; i != count; ++i) {
-    Name key(util::cfstring::toStdString((CFStringRef)CFArrayGetValueAtIndex(changedKeys, i)));
+    Name key(detail::cfstring::toStdString((CFStringRef)CFArrayGetValueAtIndex(changedKeys, i)));
     std::string ifName = key.at(-2).toUri();
 
     auto ifIt = m_interfaces.find(ifName);
diff --git a/ndn-cxx/net/impl/network-monitor-impl-osx.hpp b/ndn-cxx/net/impl/network-monitor-impl-osx.hpp
index 7ff688f..44b9af2 100644
--- a/ndn-cxx/net/impl/network-monitor-impl-osx.hpp
+++ b/ndn-cxx/net/impl/network-monitor-impl-osx.hpp
@@ -29,7 +29,7 @@
 #error "This file should not be included ..."
 #endif
 
-#include "ndn-cxx/util/cf-releaser-osx.hpp"
+#include "ndn-cxx/detail/cf-releaser-osx.hpp"
 #include "ndn-cxx/util/scheduler.hpp"
 #include "ndn-cxx/util/scheduler-scoped-event-id.hpp"
 
@@ -106,8 +106,8 @@
   util::scheduler::ScopedEventId m_cfLoopEvent;
 
   SCDynamicStoreContext m_context;
-  util::CFReleaser<SCDynamicStoreRef> m_scStore;
-  util::CFReleaser<CFRunLoopSourceRef> m_loopSource;
+  detail::CFReleaser<SCDynamicStoreRef> m_scStore;
+  detail::CFReleaser<CFRunLoopSourceRef> m_loopSource;
 
   boost::asio::ip::udp::socket m_ioctlSocket;
 };
diff --git a/ndn-cxx/security/tpm/back-end-osx.cpp b/ndn-cxx/security/tpm/back-end-osx.cpp
index 2f4688f..92ff4b1 100644
--- a/ndn-cxx/security/tpm/back-end-osx.cpp
+++ b/ndn-cxx/security/tpm/back-end-osx.cpp
@@ -23,8 +23,8 @@
 #include "ndn-cxx/security/tpm/key-handle-osx.hpp"
 #include "ndn-cxx/security/tpm/tpm.hpp"
 #include "ndn-cxx/security/transform/private-key.hpp"
+#include "ndn-cxx/detail/cf-string-osx.hpp"
 #include "ndn-cxx/encoding/buffer-stream.hpp"
-#include "ndn-cxx/util/cf-string-osx.hpp"
 
 #include <Security/Security.h>
 #include <cstring>
@@ -33,8 +33,8 @@
 namespace security {
 namespace tpm {
 
-namespace cfstring = util::cfstring;
-using util::CFReleaser;
+namespace cfstring = detail::cfstring;
+using detail::CFReleaser;
 
 class BackEndOsx::Impl
 {
diff --git a/ndn-cxx/security/tpm/key-ref-osx.hpp b/ndn-cxx/security/tpm/key-ref-osx.hpp
index 75b93a8..bd17103 100644
--- a/ndn-cxx/security/tpm/key-ref-osx.hpp
+++ b/ndn-cxx/security/tpm/key-ref-osx.hpp
@@ -28,14 +28,15 @@
 #error "This file should not be compiled ..."
 #endif
 
-#include "ndn-cxx/util/cf-releaser-osx.hpp"
+#include "ndn-cxx/detail/cf-releaser-osx.hpp"
+
 #include <Security/Security.h>
 
 namespace ndn {
 namespace security {
 namespace tpm {
 
-using KeyRefOsx = util::CFReleaser<SecKeyRef>;
+using KeyRefOsx = detail::CFReleaser<SecKeyRef>;
 
 } // namespace tpm
 } // namespace security
