diff --git a/src/encryptor.cpp b/src/encryptor.cpp
index 68ac6eb..efee391 100644
--- a/src/encryptor.cpp
+++ b/src/encryptor.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2019, Regents of the University of California
+ * Copyright (c) 2014-2020, Regents of the University of California
  *
  * NAC library is free software: you can redistribute it and/or modify it under the
  * terms of the GNU Lesser General Public License as published by the Free Software
@@ -32,16 +32,16 @@
 Encryptor::Encryptor(const Name& accessPrefix,
                      const Name& ckPrefix, SigningInfo ckDataSigningInfo,
                      const ErrorCallback& onFailure,
-                     Validator& validator, KeyChain& keyChain, Face& face)
-  : m_accessPrefix{accessPrefix}
-  , m_ckPrefix{ckPrefix}
-  , m_ckBits{AES_KEY_SIZE}
-  , m_ckDataSigningInfo{std::move(ckDataSigningInfo)}
+                     Validator&, KeyChain& keyChain, Face& face)
+  : m_accessPrefix(accessPrefix)
+  , m_ckPrefix(ckPrefix)
+  , m_ckBits(AES_KEY_SIZE)
+  , m_ckDataSigningInfo(std::move(ckDataSigningInfo))
   , m_isKekRetrievalInProgress(false)
   , m_onFailure(onFailure)
-  , m_keyChain{keyChain}
-  , m_face{face}
-  , m_scheduler{face.getIoService()}
+  , m_keyChain(keyChain)
+  , m_face(face)
+  , m_scheduler(face.getIoService())
 {
   regenerateCk();
 
@@ -199,7 +199,8 @@
     return true;
   }
   catch (const std::runtime_error&) {
-    onFailure(ErrorCode::EncryptionFailure, "Failed to encrypt generated CK with KEK " + m_kek->getName().toUri());
+    onFailure(ErrorCode::EncryptionFailure,
+              "Failed to encrypt generated CK with KEK " + m_kek->getName().toUri());
     return false;
   }
 }
diff --git a/src/version.hpp.in b/src/version.hpp.in
index 2e207ea..2f002c9 100644
--- a/src/version.hpp.in
+++ b/src/version.hpp.in
@@ -1,28 +1,27 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/**
- * Copyright (c) 2013-2014 Regents of the University of California.
+/*
+ * Copyright (c) 2014-2020, Regents of the University of California
  *
- * This file is part of ndn-nac library (NDN C++ library with eXperimental eXtensions).
- *
- * ndn-nac library is free software: you can redistribute it and/or modify it under the
+ * NAC library is free software: you can redistribute it and/or modify it under the
  * terms of the GNU Lesser General Public License as published by the Free Software
  * Foundation, either version 3 of the License, or (at your option) any later version.
  *
- * ndn-nac library is distributed in the hope that it will be useful, but WITHOUT ANY
+ * NAC library is distributed in the hope that it will be useful, but WITHOUT ANY
  * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
  * PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more details.
  *
  * You should have received copies of the GNU General Public License and GNU Lesser
- * General Public License along with ndn-nac, e.g., in COPYING.md file.  If not, see
+ * General Public License along with ndn-cxx, e.g., in COPYING.md file.  If not, see
  * <http://www.gnu.org/licenses/>.
  *
- * See AUTHORS.md for complete list of ndn-nac authors and contributors.
+ * See AUTHORS.md for complete list of NAC library authors and contributors.
  */
 
-#ifndef NAC_VERSION_HPP
-#define NAC_VERSION_HPP
+#ifndef NDN_NAC_VERSION_HPP
+#define NDN_NAC_VERSION_HPP
 
 namespace ndn {
+namespace nac {
 
 /** ndn-nac version follows Semantic Versioning 2.0.0 specification
  *  http://semver.org/
@@ -63,6 +62,7 @@
 /// PATCH version
 #define NDN_NAC_VERSION_PATCH @VERSION_PATCH@
 
+} // namespace nac
 } // namespace ndn
 
-#endif // NAC_VERSION_HPP
+#endif // NDN_NAC_VERSION_HPP
