diff --git a/.jenkins.d/01-deps.sh b/.jenkins.d/01-deps.sh
new file mode 100755
index 0000000..1a0e8c8
--- /dev/null
+++ b/.jenkins.d/01-deps.sh
@@ -0,0 +1,35 @@
+#!/usr/bin/env bash
+set -x
+set -e
+
+IS_OSX=$( python -c "print 'yes' if 'OSX' in '$NODE_LABELS'.strip().split(' ') else 'no'" )
+IS_UBUNTU=$( python -c "print 'yes' if 'Ubuntu' in '$NODE_LABELS'.strip().split(' ') else 'no'" )
+
+if [[ $IS_OSX == "yes" ]]; then
+    brew update
+    brew upgrade
+    brew install boost cryptopp pkg-config libxml2
+    brew link --force libxml2
+    brew cleanup
+fi
+
+if [[ $IS_UBUNTU == "yes" ]]; then
+    sudo apt-get update -q -y
+    sudo apt-get -y install build-essential
+    sudo apt-get -y install libssl-dev libsqlite3-dev libcrypto++-dev
+
+    IS_12_04=$( python -c "print 'yes' if 'Ubuntu-12.04' in '$NODE_LABELS'.strip().split(' ') else 'no'" )
+    if [[ $IS_12_04 == "yes" ]]; then
+        sudo apt-get install -y python-software-properties
+        sudo add-apt-repository -y ppa:boost-latest/ppa
+        sudo apt-get update -q -y
+        sudo apt-get install -y libboost1.55-all-dev
+        sudo apt-get install -y python-gnomedesktop
+    else
+        sudo apt-get install -y libboost-all-dev
+    fi
+
+    sudo apt-get install -y python-dev python-pygraphviz python-kiwi
+    sudo apt-get install -y python-pygoocanvas python-gnome2
+    sudo apt-get install -y python-rsvg ipython
+fi
diff --git a/.jenkins.d/00-deps-ndn-cxx.sh b/.jenkins.d/02-deps-ndn-cxx.sh
similarity index 75%
rename from .jenkins.d/00-deps-ndn-cxx.sh
rename to .jenkins.d/02-deps-ndn-cxx.sh
index 12e3eb2..fdfafce 100755
--- a/.jenkins.d/00-deps-ndn-cxx.sh
+++ b/.jenkins.d/02-deps-ndn-cxx.sh
@@ -7,8 +7,6 @@
 if [ ! -d ndn-cxx ]; then
     git clone git://github.com/named-data/ndn-cxx
     cd ndn-cxx
-    # TEMPORARY, the following must be removed after issue if fixed
-    git checkout 81a6c5dea60cea97c60dab0d78576c0d3b4e29ed
     BUILD="yes"
 else
     cd ndn-cxx
@@ -16,8 +14,6 @@
     sudo rm -Rf latest-version
     git clone git://github.com/named-data/ndn-cxx latest-version
     cd latest-version
-    # TEMPORARY, the following must be removed after issue if fixed
-    git checkout 81a6c5dea60cea97c60dab0d78576c0d3b4e29ed
     LATEST_VERSION=`git rev-parse HEAD || echo UNKNOWN`
     cd ..
     rm -Rf latest-version
@@ -38,6 +34,11 @@
     sudo ./waf distclean -j1 --color=yes
 fi
 
-./waf configure -j1 --color=yes --without-osx-keychain
+IS_UBUNTU_12_04=$( python -c "print 'yes' if 'Ubuntu-12.04' in '$NODE_LABELS'.strip().split(' ') else 'no'" )
+if [[ $IS_UBUNTU_12_04 == "yes" ]]; then
+    EXTRA_FLAGS=" --boost-libs=/usr/lib/x86_64-linux-gnu"
+fi
+
+./waf configure -j1 --color=yes --without-osx-keychain $EXTRA_FLAGS
 ./waf -j1 --color=yes
 sudo ./waf install -j1 --color=yes
diff --git a/.jenkins.d/10-build.sh b/.jenkins.d/10-build.sh
index 9297c7e..33352ca 100755
--- a/.jenkins.d/10-build.sh
+++ b/.jenkins.d/10-build.sh
@@ -7,12 +7,16 @@
 # git submodule update
 
 # COVERAGE=$( python -c "print '--with-coverage' if 'code-coverage' in '$JOB_NAME' else ''" )
+IS_UBUNTU_12_04=$( python -c "print 'yes' if 'Ubuntu-12.04' in '$NODE_LABELS'.strip().split(' ') else 'no'" )
+if [[ $IS_UBUNTU_12_04 == "yes" ]]; then
+    EXTRA_FLAGS=" --boost-libs=/usr/lib/x86_64-linux-gnu"
+fi
 
 # Cleanup
 sudo ./waf -j1 distclean
 
 # Configure/build in debug mode
-./waf -j1 configure --enable-examples --enable-tests
+./waf -j1 configure --enable-examples --enable-tests $EXTRA_FLAGS
 ./waf -j1 build
 
 # # Cleanup
diff --git a/docs/source/getting-started.rst b/docs/source/getting-started.rst
index 0f0ee5a..a56fbe1 100644
--- a/docs/source/getting-started.rst
+++ b/docs/source/getting-started.rst
@@ -63,7 +63,7 @@
 
            sudo apt-get install python-dev python-pygraphviz python-kiwi
            sudo apt-get install python-pygoocanvas python-gnome2
-           sudo apt-get install python-gnomedesktop python-rsvg ipython
+           sudo apt-get install python-rsvg ipython
 
    * For Fedora:
 
@@ -87,6 +87,13 @@
            # you will be able to install another useful python module
            # sudo port install py27-kiwi
 
+   * For OS X with HomeBrew
+
+       .. code-block:: bash
+
+           brew install boost cryptopp pkg-config libxml2
+           brew link --force libxml2
+
 .. _visualizer: http://www.nsnam.org/wiki/index.php/PyViz
 
 Downloading ndnSIM source
@@ -107,9 +114,6 @@
     mkdir ndnSIM
     cd ndnSIM
     git clone https://github.com/named-data/ndn-cxx.git ndn-cxx
-    cd ndn-cxx
-    git checkout 81a6c5dea60cea97c60dab0d78576c0d3b4e29ed
-    cd ..
     git clone https://github.com/cawka/ns-3-dev-ndnSIM.git ns-3
     git clone https://github.com/cawka/pybindgen.git pybindgen
     git clone https://github.com/named-data/ndnSIM.git ns-3/src/ndnSIM
diff --git a/helper/ndn-stack-helper.cpp b/helper/ndn-stack-helper.cpp
index 6e45281..fd319a6 100644
--- a/helper/ndn-stack-helper.cpp
+++ b/helper/ndn-stack-helper.cpp
@@ -61,7 +61,7 @@
 KeyChain&
 StackHelper::getKeyChain()
 {
-  static ::ndn::DummyKeyChain keyChain;
+  static ::ndn::KeyChain keyChain("pib-dummy", "tpm-dummy");
   return keyChain;
 }
 
diff --git a/utils/dummy-keychain.cpp b/utils/dummy-keychain.cpp
index 84d79ee..fefc86e 100644
--- a/utils/dummy-keychain.cpp
+++ b/utils/dummy-keychain.cpp
@@ -62,6 +62,17 @@
    0x81, 0x91, 0x0b, 0x91, 0x9f, 0x3a, 0x04, 0xa2, 0x44, 0x28, 0x19, 0xa1, 0x38, 0x21, 0x4f, 0x25,
    0x59, 0x8a, 0x48, 0xc2};
 
+const std::string DummyPublicInfo::SCHEME = "pib-dummy";
+const std::string DummyTpm::SCHEME = "tpm-dummy";
+
+NDN_CXX_KEYCHAIN_REGISTER_PIB(DummyPublicInfo, "pib-dummy", "dummy");
+NDN_CXX_KEYCHAIN_REGISTER_TPM(DummyTpm, "tpm-dummy", "dummy");
+
+DummyPublicInfo::DummyPublicInfo(const std::string& locator)
+  : SecPublicInfo(locator)
+{
+}
+
 bool
 DummyPublicInfo::doesIdentityExist(const Name& identityName)
 {
@@ -226,11 +237,34 @@
 {
 }
 
+void
+DummyPublicInfo::setTpmLocator(const std::string& tpmLocator)
+{
+  m_tpmLocator = tpmLocator;
+}
+
+std::string
+DummyPublicInfo::getTpmLocator()
+{
+  return m_tpmLocator;
+}
+
+std::string
+DummyPublicInfo::getScheme()
+{
+  return DummyPublicInfo::SCHEME;
+}
+
 //////////////////////////////////////////////////////////////////////////////////////////
 //////////////////////////////////////////////////////////////////////////////////////////
 //////////////////////////////////////////////////////////////////////////////////////////
 //////////////////////////////////////////////////////////////////////////////////////////
 
+DummyTpm::DummyTpm(const std::string& locator)
+  : SecTpm(locator)
+{
+}
+
 void
 DummyTpm::setTpmPassword(const uint8_t* password, size_t passwordLength)
 {
@@ -343,5 +377,11 @@
   return false;
 }
 
+std::string
+DummyTpm::getScheme()
+{
+  return DummyTpm::SCHEME;
+}
+
 } // namespace security
 } // namespace ndn
diff --git a/utils/dummy-keychain.hpp b/utils/dummy-keychain.hpp
index bef13e5..4a1c0fd 100644
--- a/utils/dummy-keychain.hpp
+++ b/utils/dummy-keychain.hpp
@@ -27,6 +27,8 @@
 
 class DummyPublicInfo : public SecPublicInfo {
 public:
+  DummyPublicInfo(const std::string& locator);
+
   virtual bool
   doesIdentityExist(const Name& identityName);
 
@@ -90,6 +92,12 @@
   virtual void
   deleteIdentityInfo(const Name& identity);
 
+  virtual void
+  setTpmLocator(const std::string& tpmLocator);
+
+  virtual std::string
+  getTpmLocator();
+
 protected:
   virtual void
   setDefaultIdentityInternal(const Name& identityName);
@@ -99,6 +107,15 @@
 
   virtual void
   setDefaultCertificateNameForKeyInternal(const Name& certificateName);
+
+  virtual std::string
+  getScheme();
+
+public:
+  static const std::string SCHEME;
+
+private:
+  std::string m_tpmLocator;
 };
 
 //////////////////////////////////////////////////////////////////////////////////////////
@@ -106,6 +123,8 @@
 
 class DummyTpm : public SecTpm {
 public:
+  DummyTpm(const std::string& locator);
+
   virtual void
   setTpmPassword(const uint8_t* password, size_t passwordLength);
 
@@ -155,6 +174,9 @@
   virtual void
   addAppToAcl(const Name& keyName, KeyClass keyClass, const std::string& appPath, AclType acl);
 
+  virtual std::string
+  getScheme();
+
 protected:
   virtual ConstBufferPtr
   exportPrivateKeyPkcs8FromTpm(const Name& keyName);
@@ -164,20 +186,12 @@
 
   virtual bool
   importPublicKeyPkcs1IntoTpm(const Name& keyName, const uint8_t* buffer, size_t bufferSize);
-};
 
-typedef KeyChainTraits<DummyPublicInfo, DummyTpm> DummyKeyChainTraits;
+public:
+  static const std::string SCHEME;
+};
 
 } // namespace security
-
-class DummyKeyChain : public KeyChain {
-public:
-  DummyKeyChain()
-    : KeyChain(security::DummyKeyChainTraits())
-  {
-  }
-};
-
 } // namespace ndn
 
 #endif // NDNSIM_UTILS_DUMMY_KEYCHAIN_HPP
