diff --git a/src/algo/aes.cpp b/src/algo/aes.cpp
index c71946b..bf36aa7 100644
--- a/src/algo/aes.cpp
+++ b/src/algo/aes.cpp
@@ -1,20 +1,20 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /**
- * Copyright (c) 2014-2018,  Regents of the University of California
+ * Copyright (c) 2014-2018, Regents of the University of California
  *
- * This file is part of gep (Group-based Encryption Protocol for NDN).
- * See AUTHORS.md for complete list of gep authors and contributors.
+ * This file is part of NAC (Name-Based Access Control for NDN).
+ * See AUTHORS.md for complete list of NAC authors and contributors.
  *
- * gep is free software: you can redistribute it and/or modify it under the terms
+ * NAC is free software: you can redistribute it and/or modify it under the terms
  * of the GNU General Public License as published by the Free Software Foundation,
  * either version 3 of the License, or (at your option) any later version.
  *
- * gep is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
+ * NAC 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 General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License along with
- * gep, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
+ * NAC, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "aes.hpp"
@@ -25,7 +25,7 @@
 #include <ndn-cxx/security/transform/stream-sink.hpp>
 
 namespace ndn {
-namespace gep {
+namespace nac {
 namespace algo {
 
 DecryptKey<Aes>
@@ -91,5 +91,5 @@
 }
 
 } // namespace algo
-} // namespace gep
+} // namespace nac
 } // namespace ndn
diff --git a/src/algo/aes.hpp b/src/algo/aes.hpp
index d0fbabd..685ea4b 100644
--- a/src/algo/aes.hpp
+++ b/src/algo/aes.hpp
@@ -1,24 +1,24 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /**
- * Copyright (c) 2014-2018,  Regents of the University of California
+ * Copyright (c) 2014-2018, Regents of the University of California
  *
- * This file is part of gep (Group-based Encryption Protocol for NDN).
- * See AUTHORS.md for complete list of gep authors and contributors.
+ * This file is part of NAC (Name-Based Access Control for NDN).
+ * See AUTHORS.md for complete list of NAC authors and contributors.
  *
- * gep is free software: you can redistribute it and/or modify it under the terms
+ * NAC is free software: you can redistribute it and/or modify it under the terms
  * of the GNU General Public License as published by the Free Software Foundation,
  * either version 3 of the License, or (at your option) any later version.
  *
- * gep is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
+ * NAC 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 General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License along with
- * gep, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
+ * NAC, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef NDN_GEP_ALGO_AES_HPP
-#define NDN_GEP_ALGO_AES_HPP
+#ifndef NDN_NAC_ALGO_AES_HPP
+#define NDN_NAC_ALGO_AES_HPP
 
 #include "common.hpp"
 #include "encrypt-params.hpp"
@@ -27,7 +27,7 @@
 #include <ndn-cxx/security/key-params.hpp>
 
 namespace ndn {
-namespace gep {
+namespace nac {
 namespace algo {
 
 class Aes
@@ -50,11 +50,11 @@
           const EncryptParams& params);
 };
 
-typedef DecryptKey<Aes> AesEncryptKey;
-typedef EncryptKey<Aes> AesDecryptKey;
+using AesEncryptKey = DecryptKey<Aes>;
+using AesDecryptKey = EncryptKey<Aes>;
 
 } // namespace algo
-} // namespace gep
+} // namespace nac
 } // namespace ndn
 
-#endif // NDN_GEP_ALGO_AES_HPP
+#endif // NDN_NAC_ALGO_AES_HPP
diff --git a/src/algo/encrypt-params.cpp b/src/algo/encrypt-params.cpp
index 91b5588..6663249 100644
--- a/src/algo/encrypt-params.cpp
+++ b/src/algo/encrypt-params.cpp
@@ -1,20 +1,20 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /**
- * Copyright (c) 2014-2018,  Regents of the University of California
+ * Copyright (c) 2014-2018, Regents of the University of California
  *
- * This file is part of gep (Group-based Encryption Protocol for NDN).
- * See AUTHORS.md for complete list of gep authors and contributors.
+ * This file is part of NAC (Name-Based Access Control for NDN).
+ * See AUTHORS.md for complete list of NAC authors and contributors.
  *
- * gep is free software: you can redistribute it and/or modify it under the terms
+ * NAC is free software: you can redistribute it and/or modify it under the terms
  * of the GNU General Public License as published by the Free Software Foundation,
  * either version 3 of the License, or (at your option) any later version.
  *
- * gep is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
+ * NAC 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 General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License along with
- * gep, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
+ * NAC, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "encrypt-params.hpp"
@@ -22,7 +22,7 @@
 #include <openssl/rand.h>
 
 namespace ndn {
-namespace gep {
+namespace nac {
 namespace algo {
 
 EncryptParams::EncryptParams(tlv::AlgorithmTypeValue algorithm, uint8_t ivLength)
@@ -62,5 +62,5 @@
 }
 
 } // namespace algo
-} // namespace gep
+} // namespace nac
 } // namespace ndn
diff --git a/src/algo/encrypt-params.hpp b/src/algo/encrypt-params.hpp
index 030f443..26b494c 100644
--- a/src/algo/encrypt-params.hpp
+++ b/src/algo/encrypt-params.hpp
@@ -1,30 +1,30 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /**
- * Copyright (c) 2014-2018,  Regents of the University of California
+ * Copyright (c) 2014-2018, Regents of the University of California
  *
- * This file is part of gep (Group-based Encryption Protocol for NDN).
- * See AUTHORS.md for complete list of gep authors and contributors.
+ * This file is part of NAC (Name-Based Access Control for NDN).
+ * See AUTHORS.md for complete list of NAC authors and contributors.
  *
- * gep is free software: you can redistribute it and/or modify it under the terms
+ * NAC is free software: you can redistribute it and/or modify it under the terms
  * of the GNU General Public License as published by the Free Software Foundation,
  * either version 3 of the License, or (at your option) any later version.
  *
- * gep is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
+ * NAC 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 General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License along with
- * gep, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
+ * NAC, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef NDN_GEP_ENCRYPT_PARAMS_HPP
-#define NDN_GEP_ENCRYPT_PARAMS_HPP
+#ifndef NDN_NAC_ENCRYPT_PARAMS_HPP
+#define NDN_NAC_ENCRYPT_PARAMS_HPP
 
 #include "../tlv.hpp"
 #include <ndn-cxx/encoding/buffer-stream.hpp>
 
 namespace ndn {
-namespace gep {
+namespace nac {
 namespace algo {
 
 class EncryptParams
@@ -50,7 +50,7 @@
 };
 
 } // namespace algo
-} // namespace gep
+} // namespace nac
 } // namespace ndn
 
-#endif // NDN_GEP_ENCRYPT_PARAMS_HPP
+#endif // NDN_NAC_ENCRYPT_PARAMS_HPP
diff --git a/src/algo/encryptor.cpp b/src/algo/encryptor.cpp
index c9f7745..4f626c2 100644
--- a/src/algo/encryptor.cpp
+++ b/src/algo/encryptor.cpp
@@ -2,19 +2,19 @@
 /**
  * Copyright (c) 2014-2018, Regents of the University of California
  *
- * This file is part of ndn-group-encrypt (Group-based Encryption Protocol for NDN).
- * See AUTHORS.md for complete list of ndn-group-encrypt authors and contributors.
+ * This file is part of NAC (Name-Based Access Control for NDN).
+ * See AUTHORS.md for complete list of NAC authors and contributors.
  *
- * ndn-group-encrypt is free software: you can redistribute it and/or modify it under
- * the terms of the GNU General Public License as published by the Free Software
- * Foundation, either version 3 of the License, or (at your option) any later version.
+ * NAC is free software: you can redistribute it and/or modify it under the terms
+ * of the GNU General Public License as published by the Free Software Foundation,
+ * either version 3 of the License, or (at your option) any later version.
  *
- * ndn-group-encrypt 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 General Public License for more details.
+ * NAC 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 General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License along with
- * ndn-group-encrypt, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
+ * NAC, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "encryptor.hpp"
@@ -25,7 +25,7 @@
 #include <openssl/rand.h>
 
 namespace ndn {
-namespace gep {
+namespace nac {
 namespace algo {
 
 /**
@@ -148,5 +148,5 @@
 }
 
 } // namespace algo
-} // namespace gep
+} // namespace nac
 } // namespace ndn
diff --git a/src/algo/encryptor.hpp b/src/algo/encryptor.hpp
index 4dde07e..7c46355 100644
--- a/src/algo/encryptor.hpp
+++ b/src/algo/encryptor.hpp
@@ -1,20 +1,20 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /**
- * Copyright (c) 2014-2018,  Regents of the University of California
+ * Copyright (c) 2014-2018, Regents of the University of California
  *
- * This file is part of ndn-group-encrypt (Group-based Encryption Protocol for NDN).
- * See AUTHORS.md for complete list of ndn-group-encrypt authors and contributors.
+ * This file is part of NAC (Name-Based Access Control for NDN).
+ * See AUTHORS.md for complete list of NAC authors and contributors.
  *
- * ndn-group-encrypt is free software: you can redistribute it and/or modify it under
- * the terms of the GNU General Public License as published by the Free Software
- * Foundation, either version 3 of the License, or (at your option) any later version.
+ * NAC is free software: you can redistribute it and/or modify it under the terms
+ * of the GNU General Public License as published by the Free Software Foundation,
+ * either version 3 of the License, or (at your option) any later version.
  *
- * ndn-group-encrypt 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 General Public License for more details.
+ * NAC 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 General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License along with
- * ndn-group-encrypt, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
+ * NAC, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
  */
 
 #ifndef NDN_ENCRYPTOR_HPP
@@ -24,7 +24,7 @@
 #include <ndn-cxx/data.hpp>
 
 namespace ndn {
-namespace gep {
+namespace nac {
 namespace algo {
 
 /**
@@ -48,7 +48,7 @@
             const EncryptParams& params);
 
 } // namespace algo
-} // namespace gep
+} // namespace nac
 } // namespace ndn
 
 #endif // NDN_ENCRYPTOR_HPP
diff --git a/src/algo/error.hpp b/src/algo/error.hpp
index d9abdb2..2ed6cfa 100644
--- a/src/algo/error.hpp
+++ b/src/algo/error.hpp
@@ -1,43 +1,39 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /**
- * Copyright (c) 2014-2018,  Regents of the University of California
+ * Copyright (c) 2014-2018, Regents of the University of California
  *
- * This file is part of gep (Group-based Encryption Protocol for NDN).
- * See AUTHORS.md for complete list of gep authors and contributors.
+ * This file is part of NAC (Name-Based Access Control for NDN).
+ * See AUTHORS.md for complete list of NAC authors and contributors.
  *
- * gep is free software: you can redistribute it and/or modify it under the terms
+ * NAC is free software: you can redistribute it and/or modify it under the terms
  * of the GNU General Public License as published by the Free Software Foundation,
  * either version 3 of the License, or (at your option) any later version.
  *
- * gep is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
+ * NAC 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 General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License along with
- * gep, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
+ * NAC, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef NDN_GEP_ALGO_ERROR_HPP
-#define NDN_GEP_ALGO_ERROR_HPP
+#ifndef NDN_NAC_ALGO_ERROR_HPP
+#define NDN_NAC_ALGO_ERROR_HPP
 
 #include <stdexcept>
 
 namespace ndn {
-namespace gep {
+namespace nac {
 namespace algo {
 
 class Error : public std::runtime_error
 {
 public:
-  explicit
-  Error(const std::string& what)
-    : std::runtime_error(what)
-  {
-  }
+  using std::runtime_error::runtime_error;
 };
 
 } // namespace algo
-} // namespace gep
+} // namespace nac
 } // namespace ndn
 
-#endif // NDN_GEP_ALGO_ERROR_HPP
+#endif // NDN_NAC_ALGO_ERROR_HPP
diff --git a/src/algo/rsa.cpp b/src/algo/rsa.cpp
index 85f4498..ff6c31d 100644
--- a/src/algo/rsa.cpp
+++ b/src/algo/rsa.cpp
@@ -1,20 +1,20 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /**
- * Copyright (c) 2014-2018,  Regents of the University of California
+ * Copyright (c) 2014-2018, Regents of the University of California
  *
- * This file is part of gep (Group-based Encryption Protocol for NDN).
- * See AUTHORS.md for complete list of gep authors and contributors.
+ * This file is part of NAC (Name-Based Access Control for NDN).
+ * See AUTHORS.md for complete list of NAC authors and contributors.
  *
- * gep is free software: you can redistribute it and/or modify it under the terms
+ * NAC is free software: you can redistribute it and/or modify it under the terms
  * of the GNU General Public License as published by the Free Software Foundation,
  * either version 3 of the License, or (at your option) any later version.
  *
- * gep is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
+ * NAC 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 General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License along with
- * gep, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
+ * NAC, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "rsa.hpp"
@@ -24,7 +24,7 @@
 #include <ndn-cxx/security/transform/public-key.hpp>
 
 namespace ndn {
-namespace gep {
+namespace nac {
 namespace algo {
 
 DecryptKey<Rsa>
@@ -80,5 +80,5 @@
 }
 
 } // namespace algo
-} // namespace gep
+} // namespace nac
 } // namespace ndn
diff --git a/src/algo/rsa.hpp b/src/algo/rsa.hpp
index db44474..89719e5 100644
--- a/src/algo/rsa.hpp
+++ b/src/algo/rsa.hpp
@@ -1,31 +1,31 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /**
- * Copyright (c) 2014-2018,  Regents of the University of California
+ * Copyright (c) 2014-2018, Regents of the University of California
  *
- * This file is part of gep (Group-based Encryption Protocol for NDN).
- * See AUTHORS.md for complete list of gep authors and contributors.
+ * This file is part of NAC (Name-Based Access Control for NDN).
+ * See AUTHORS.md for complete list of NAC authors and contributors.
  *
- * gep is free software: you can redistribute it and/or modify it under the terms
+ * NAC is free software: you can redistribute it and/or modify it under the terms
  * of the GNU General Public License as published by the Free Software Foundation,
  * either version 3 of the License, or (at your option) any later version.
  *
- * gep is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
+ * NAC 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 General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License along with
- * gep, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
+ * NAC, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef NDN_GEP_ALGO_RSA_HPP
-#define NDN_GEP_ALGO_RSA_HPP
+#ifndef NDN_NAC_ALGO_RSA_HPP
+#define NDN_NAC_ALGO_RSA_HPP
 
 #include "encrypt-params.hpp"
 #include "../decrypt-key.hpp"
 #include <ndn-cxx/security/key-params.hpp>
 
 namespace ndn {
-namespace gep {
+namespace nac {
 namespace algo {
 
 class Rsa
@@ -46,11 +46,11 @@
           const uint8_t* payload, size_t payloadLen);
 };
 
-typedef DecryptKey<Rsa> RsaPrivateKey;
-typedef EncryptKey<Rsa> RsaPublicKey;
+using RsaPrivateKey = DecryptKey<Rsa>;
+using RsaPublicKey = EncryptKey<Rsa>;
 
 } // namespace algo
-} // namespace gep
+} // namespace nac
 } // namespace ndn
 
-#endif // NDN_GEP_ALGO_RSA_HPP
+#endif // NDN_NAC_ALGO_RSA_HPP
