diff --git a/src/common.hpp b/src/common.hpp
index 6a45506..8212a7e 100644
--- a/src/common.hpp
+++ b/src/common.hpp
@@ -73,6 +73,7 @@
 #include <string>
 #include <type_traits>
 #include <unistd.h>
+#include <utility>
 
 #if defined(__GNUC__) || defined(__clang__)
 #  define DEPRECATED(func) func __attribute__ ((deprecated))
@@ -137,4 +138,6 @@
 using boost::noncopyable;
 }
 
+#include "util/backports.hpp"
+
 #endif // NDN_COMMON_HPP
diff --git a/src/security/key-chain.hpp b/src/security/key-chain.hpp
index c9ed28c..c5082d3 100644
--- a/src/security/key-chain.hpp
+++ b/src/security/key-chain.hpp
@@ -911,7 +911,7 @@
 KeyChain::registerPib(std::initializer_list<std::string> aliases)
 {
   registerPibImpl(*aliases.begin(), aliases, [] (const std::string& locator) {
-      return unique_ptr<SecPublicInfo>(new PibType(locator));
+      return make_unique<PibType>(locator);
     });
 }
 
@@ -920,7 +920,7 @@
 KeyChain::registerTpm(std::initializer_list<std::string> aliases)
 {
   registerTpmImpl(*aliases.begin(), aliases, [] (const std::string& locator) {
-      return unique_ptr<SecTpm>(new TpmType(locator));
+      return make_unique<TpmType>(locator);
     });
 }
 
diff --git a/src/util/backports.hpp b/src/util/backports.hpp
new file mode 100644
index 0000000..19b33c4
--- /dev/null
+++ b/src/util/backports.hpp
@@ -0,0 +1,48 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/**
+ * Copyright (c) 2015, Regents of the University of California,
+ *                     Arizona Board of Regents,
+ *                     Colorado State University,
+ *                     University Pierre & Marie Curie, Sorbonne University,
+ *                     Washington University in St. Louis,
+ *                     Beijing Institute of Technology,
+ *                     The University of Memphis.
+ *
+ * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
+ *
+ * ndn-cxx 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-cxx 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-cxx, e.g., in COPYING.md file.  If not, see
+ * <http://www.gnu.org/licenses/>.
+ *
+ * See AUTHORS.md for complete list of ndn-cxx authors and contributors.
+ */
+
+#ifndef NDN_UTIL_BACKPORTS_HPP
+#define NDN_UTIL_BACKPORTS_HPP
+
+#include "../common.hpp"
+
+namespace ndn {
+
+#if __cpp_lib_make_unique
+using std::make_unique;
+#else
+template<typename T, typename... Args>
+inline unique_ptr<T>
+make_unique(Args&&... args)
+{
+  return unique_ptr<T>(new T(std::forward<Args>(args)...));
+}
+#endif // __cpp_lib_make_unique
+
+} // namespace ndn
+
+#endif // NDN_UTIL_BACKPORTS_HPP
