diff --git a/src/group-manager-db.cpp b/src/group-manager-db.cpp
index ec0473d..5c9cd23 100644
--- a/src/group-manager-db.cpp
+++ b/src/group-manager-db.cpp
@@ -60,11 +60,11 @@
 class GroupManagerDB::Impl
 {
 public:
-  Impl(const std::string& dbDir)
+  Impl(const std::string& dbPath)
   {
     // open Database
 
-    int result = sqlite3_open_v2(dbDir.c_str(), &m_database,
+    int result = sqlite3_open_v2(dbPath.c_str(), &m_database,
                                  SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE,
 #ifdef NDN_CXX_DISABLE_SQLITE3_FS_LOCKING
                                  "unix-dotfile"
@@ -74,7 +74,7 @@
                                  );
 
     if (result != SQLITE_OK)
-      BOOST_THROW_EXCEPTION(Error("GroupManager DB cannot be opened/created: " + dbDir));
+      BOOST_THROW_EXCEPTION(Error("GroupManager DB cannot be opened/created: " + dbPath));
 
     // enable foreign key
     sqlite3_exec(m_database, "PRAGMA foreign_keys = ON", nullptr, nullptr, nullptr);
@@ -110,8 +110,8 @@
   sqlite3* m_database;
 };
 
-GroupManagerDB::GroupManagerDB(const std::string& dbDir)
-  : m_impl(new Impl(dbDir))
+GroupManagerDB::GroupManagerDB(const std::string& dbPath)
+  : m_impl(new Impl(dbPath))
 {
 }
 
diff --git a/src/group-manager-db.hpp b/src/group-manager-db.hpp
index bf5ef2f..9f737ae 100644
--- a/src/group-manager-db.hpp
+++ b/src/group-manager-db.hpp
@@ -46,8 +46,11 @@
   };
 
 public:
+  /**
+   * @brief Create the database of group manager at path @p dbPath.
+   */
   explicit
-  GroupManagerDB(const std::string& dbDir);
+  GroupManagerDB(const std::string& dbPath);
 
   ~GroupManagerDB();
 
@@ -90,7 +93,8 @@
   addSchedule(const std::string& name, const Schedule& schedule);
 
   /**
-   * @brief Delete the schedule with @p name
+   * @brief Delete the schedule with @p name.
+   *        also delete members which reference the schedule.
    */
   void
   deleteSchedule(const std::string& name);
diff --git a/src/group-manager.cpp b/src/group-manager.cpp
index 345eb79..4bbf19e 100644
--- a/src/group-manager.cpp
+++ b/src/group-manager.cpp
@@ -28,10 +28,10 @@
 namespace ndn {
 namespace gep {
 
-GroupManager::GroupManager(const Name& prefix, const Name& dataType, const std::string& dbDir,
+GroupManager::GroupManager(const Name& prefix, const Name& dataType, const std::string& dbPath,
                            const int paramLength, const int freshPeriod)
   : m_namespace(prefix)
-  , m_db(dbDir)
+  , m_db(dbPath)
   , m_paramLength(paramLength)
   , m_freshPeriod(freshPeriod)
 {
diff --git a/src/group-manager.hpp b/src/group-manager.hpp
index f8adeee..f2d439d 100644
--- a/src/group-manager.hpp
+++ b/src/group-manager.hpp
@@ -49,11 +49,11 @@
    *
    * The namespace of group manager is /<prefix>/read/<dataType>/
    * The group management information (including user cert, schedule) is stored in a database
-   * at @p dbDir.
-   * The group key will be an RSA key with @p paramLength bytes.
-   * The FreshnessPeriod of data packet carrying the keys will be set to @p freshPeriod.
+   * at @p dbPath.
+   * The group key will be an RSA key with @p paramLength bits.
+   * The FreshnessPeriod of data packet carrying the keys will be set to @p freshPeriod hours.
    */
-  GroupManager(const Name& prefix, const Name& dataType, const std::string& dbDir,
+  GroupManager(const Name& prefix, const Name& dataType, const std::string& dbPath,
                const int paramLength, const int freshPeriod);
 
   /**
