diff --git a/src/mgmt/nfd/cs-info.hpp b/src/mgmt/nfd/cs-info.hpp
index 0b9ad0a..cdd38a9 100644
--- a/src/mgmt/nfd/cs-info.hpp
+++ b/src/mgmt/nfd/cs-info.hpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2013-2017 Regents of the University of California.
+ * Copyright (c) 2013-2018 Regents of the University of California.
  *
  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
  *
@@ -23,14 +23,16 @@
 #define NDN_MGMT_NFD_CS_INFO_HPP
 
 #include "../../encoding/block.hpp"
+#include "../../encoding/nfd-constants.hpp"
+
+#include <bitset>
 
 namespace ndn {
 namespace nfd {
 
-/**
- * \ingroup management
- * \brief represents the CS Information dataset
- * \sa https://redmine.named-data.net/projects/nfd/wiki/CsMgmt#CS-Information-Dataset
+/** \ingroup management
+ *  \brief represents the CS Information dataset
+ *  \sa https://redmine.named-data.net/projects/nfd/wiki/CsMgmt#CS-Information-Dataset
  */
 class CsInfo
 {
@@ -60,6 +62,52 @@
   void
   wireDecode(const Block& wire);
 
+  /** \brief get CS capacity (in number of packets)
+   */
+  uint64_t
+  getCapacity() const
+  {
+    return m_capacity;
+  }
+
+  CsInfo&
+  setCapacity(uint64_t capacity);
+
+  /** \brief get CS_ENABLE_ADMIT flag
+   */
+  bool
+  getEnableAdmit() const
+  {
+    return m_flags.test(BIT_CS_ENABLE_ADMIT);
+  }
+
+  CsInfo&
+  setEnableAdmit(bool enableAdmit);
+
+  /** \brief get CS_ENABLE_SERVE flag
+   */
+  bool
+  getEnableServe() const
+  {
+    return m_flags.test(BIT_CS_ENABLE_SERVE);
+  }
+
+  CsInfo&
+  setEnableServe(bool enableServe);
+
+  /** \brief get number of stored CS entries
+   */
+  uint64_t
+  getNEntries() const
+  {
+    return m_nEntries;
+  }
+
+  CsInfo&
+  setNEntries(uint64_t nEntries);
+
+  /** \brief get number of CS lookup hits since NFD starts
+   */
   uint64_t
   getNHits() const
   {
@@ -69,6 +117,8 @@
   CsInfo&
   setNHits(uint64_t nHits);
 
+  /** \brief get number of CS lookup misses since NFD starts
+   */
   uint64_t
   getNMisses() const
   {
@@ -79,6 +129,11 @@
   setNMisses(uint64_t nMisses);
 
 private:
+  using FlagsBitSet = std::bitset<2>;
+
+  uint64_t m_capacity;
+  FlagsBitSet m_flags;
+  uint64_t m_nEntries;
   uint64_t m_nHits;
   uint64_t m_nMisses;
   mutable Block m_wire;
@@ -96,7 +151,7 @@
 }
 
 std::ostream&
-operator<<(std::ostream& os, const CsInfo& status);
+operator<<(std::ostream& os, const CsInfo& csi);
 
 } // namespace nfd
 } // namespace ndn
