diff --git a/.waf-tools/default-compiler-flags.py b/.waf-tools/default-compiler-flags.py
index 21060a2..b270243 100644
--- a/.waf-tools/default-compiler-flags.py
+++ b/.waf-tools/default-compiler-flags.py
@@ -5,6 +5,8 @@
 def options(opt):
     opt.add_option('--debug', '--with-debug', action='store_true', default=False, dest='debug',
                    help='''Compile in debugging mode without all optimizations (-O0)''')
+    opt.add_option('--with-c++11', action='store_true', default=False, dest='use_cxx11',
+                   help='''Use C++ 11 features if available in the compiler''')
 
 def configure(conf):
     areCustomCxxflagsPresent = (len(conf.env.CXXFLAGS) > 0)
diff --git a/AUTHORS.md b/AUTHORS.md
index 3d4dfc4..36f85b6 100644
--- a/AUTHORS.md
+++ b/AUTHORS.md
@@ -1,4 +1,4 @@
-ndn-cpp-dev authors
+ndn-cxx authors
 ===================
 
 ## The primary authors are (and/or have been):
diff --git a/CHANGELOG b/CHANGELOG
deleted file mode 100644
index dddc3e4..0000000
--- a/CHANGELOG
+++ /dev/null
@@ -1,36 +0,0 @@
-Interim changes since NDN-CPP v0.2(2013-12-17)
-
-Bug fixes
-* http://redmine.named-data.net/issues/1056 Fix DTAG NDNProtocolDataUnit to encode as "NDN\202\000".
-* http://redmine.named-data.net/issues/1064 Add ax_lib_sqlite3.m4, etc. to m4 directory so that autogen.sh works out of the box.
-* http://redmine.named-data.net/issues/1077 Move the BasicIdentityStorage sqlite file to ~/.ndnx/ndnsec-identity.db .
-  NOTE: If you have an old file at ~/.ndn-identity/identity.db, please move it to ~/.ndnx/ndnsec-identity.db .
-* http://redmine.named-data.net/issues/1088 Certificate name in KeyLocator should not include the version number.
-* Fix bug in getForwardingEntryFlags: Need to check all flags, not the first flag using "else if".
-
-Changes
-* http://redmine.named-data.net/issues/1085 In Name::Component, added comparison operators.
-* http://redmine.named-data.net/issues/1086 In Name::getPrefix, support a negative argument, e.g. getPrefix(-1).
-* http://redmine.named-data.net/issues/1089 Renamed key.hpp to key-locator.hpp .
-* MetaInfo: Added setFinalBlockID for Name::Component, remove unused setFinalBlockID which take uint8_t*, etc.
-* Fix clang compiler warnings: Include headers, parentheses and cast explicitly.
-* Moved class ExcludeEntry to inner class Exclude::Entry.
-* In BinaryXmlDecoder, cache the result of peekDTag for a speedup when decoding optional elements.
-* Moved validation-request.hpp to public API security/policy, and moved OnVerified and OnVerifyFailed in there.
-
-Documentation
-* Move instructions for running ./autogen.sh from configure.ac to the Development section of INSTALL.
-* http://redmine.named-data.net/issues/1072: In Doxyfile, fix EXCLUDE for ndnboost to new location include/ndnboost .
-
-NDN-CPP v0.2 (2013-11-08)
-
-This release fully supports the Common Client Libraries API.
-http://named-data.net/codebase/platform/documentation/ndn-ccl-api/
-
-Changes to future versions will be detailed in this CHANGELOG.
-
-NDN-CPP v0.1 (2013-08-09)
-
-This is the initial release, with support for expressInterest for one interest at a time.  A new release
-coming soon will have a Pending Interest Table and support processing multiple simultaneous interest and
-data packets.
diff --git a/ChangeLog b/ChangeLog
new file mode 100644
index 0000000..f6e97a1
--- /dev/null
+++ b/ChangeLog
@@ -0,0 +1,6 @@
+ndn-cxx v0.1 (2014-04-39)
+
+Initial release of the ndn-cxx library.
+
+The current set of features include:
+* <to be listed>
diff --git a/INSTALL.md b/INSTALL.md
index 9878470..4702e3f 100644
--- a/INSTALL.md
+++ b/INSTALL.md
@@ -1,10 +1,10 @@
-ndn-cpp-dev:  A dev version of Named Data Networking client library for C++
+ndn-cxx: NDN C++ library with eXperimental eXtensions
 ===========================================================================
 
 Supported platforms
 -------------------
 
-ndn-cpp-dev is tested on the following platforms:
+ndn-cxx uses continuous integration testing and has been tested on the following platforms:
 
 * Ubuntu 12.04 (64 bit and 32 bit)
 * Ubuntu 13.10 (64 bit and 32 bit)
@@ -15,9 +15,6 @@
 Prerequisites
 -------------
 
-(These are prerequisites to build ndn-cpp-dev.  To do development of ndn-cpp-dev code and update the build system,
- see Development Prerequisites.)
-
 ### Required:
 
 * `python` >= 2.6
@@ -52,7 +49,7 @@
         # For Ubuntu 13.10
         sudo apt-get install libboost-all-dev
 
-### Optional Dependencies:
+### Optional:
 
 To build tutorials, manpages, and API documentation the following
 dependencies need to be installed:
@@ -76,10 +73,10 @@
 Build
 -----
 
-(These are instructions to build ndn-cpp-dev. To do development of ndn-cpp-dev
+(These are instructions to build ndn-cxx. To do development of ndn-cxx
 code and update the build system, see Development.)
 
-To build in a terminal, change directory to the ndn-cpp-dev root.  Enter:
+To build in a terminal, change directory to the ndn-cxx root.  Enter:
 
     ./waf configure
     ./waf
@@ -87,11 +84,11 @@
 
 This builds and installs the following items:
 
-* `<LIBPATH>/libndn-cpp-dev.a`: static NDN C++ library
-* `<LIBPATH>/pkgconfig/libndn-cpp-dev.pc`: pkgconfig file storing all neccessary flags
+* `<LIBPATH>/libndn-cxx.a`: static NDN C++ library
+* `<LIBPATH>/pkgconfig/libndn-cxx.pc`: pkgconfig file storing all neccessary flags
   to build against the library.  For example, if pkgconfig or pkgconf package is
   installed and `PKG_CONFIG_PATH` is configured properly (or `<LIBPATH>/pkgconfig` is a
-  default path), `pkgconfig --libs --clflags libndn-cpp-dev` will return all necessary
+  default path), `pkgconfig --libs --clflags libndn-cxx` will return all necessary
   compile and link flags for the library.
 * `<BINPATH>/tlvdump`: a simple tool to dump contents of TLV-formatted data
 * `<BINPATH>/ndncatchunks3`: a simplified equivalent to ndncatchunks2 in NDNx package
@@ -107,7 +104,7 @@
 Documentation
 -------------
 
-ndn-cpp-dev tutorials and API documentation can be built using the following commands:
+ndn-cxx tutorials and API documentation can be built using the following commands:
 
     # Full set of documentation (tutorials + API) in build/docs
     ./waf docs
@@ -139,8 +136,9 @@
     ./waf
     sudo ./waf install
 
-In the development build all compiler optimizations are disabled by default and all warnings are treated as error.
-The default behavior can be overridden by setting CXXFLAGS environment variable before running `./waf configure`:
+In the development build all compiler optimizations are disabled by default and all
+warnings are treated as error.  The default behavior can be overridden by setting `CXXFLAGS`
+environment variable before running `./waf configure`:
 
     CXXFLAGS="-O1 -g3" ./waf configure --debug --with-tests
     ...
diff --git a/README.md b/README.md
index f846c24..fc941b4 100644
--- a/README.md
+++ b/README.md
@@ -1,18 +1,34 @@
-ndn-cpp-dev:  A dev version of Named Data Networking client library for C++
----------------------------------------------------------------------------
+ndn-cxx: NDN C++ library with eXperimental eXtensions
+=====================================================
 
-ndn-cpp-dev is a new implementation of a Named Data Networking client library written in C++.
+ndn-cxx is a C++ library, implementing Named Data Networking (NDN) primitives that can be
+used to implement various NDN applications.  The library is currently being used as part
+of the following projects:
 
-ndn-cpp-dev is open source under a license described in the file COPYING.  While the license
-does not require it, we really would appreciate it if others would share their
-contributions to the library if they are willing to do so under the same license.
+* [NFD - NDN Forwarding Daemon](https://github.com/named-data/NFD)
+* [NLSR - Named-data Link-State Routing protocol](https://github.com/named-data/NLSR)
+* [repo-ng - Next generation of NDN repository](https://github.com/named-data/repo-ng)
+* [ChronoChat - Multi-user NDN chat application](https://github.com/named-data/ChronoChat)
+* [ChronoSync - Sync library for multiuser realtime applications for NDN](https://github.com/named-data/ChronoSync)
+* [ndn-tlv-ping - Ping Application For NDN](https://github.com/named-data/ndn-tlv-ping)
+* [ndn-traffic - Traffic Generator For NDN](https://github.com/named-data/ndn-traffic)
 
-See the file INSTALL for build and install instructions.
+See the file INSTALL.md for build and install instructions.
 
-Please submit any bugs or issues to the ndn-cpp-dev issue tracker:
-http://redmine.named-data.net/projects/ndn-cpp-dev/issues
+Please submit any bugs or issues to the ndn-cxx issue tracker:
+http://redmine.named-data.net/projects/ndn-cxx/issues
 
 
-## More
+## More documentation
 
-Additional library tutorials and manpages are available in `docs/` folder.
+Extensive documentation of the library is available on the library's homepage:
+http://www.named-data.net/doc/ndn-cxx/
+
+
+## License
+
+ndn-cxx is an open source project licensed under BSD license. For more information about
+the license, refer to [`COPYING`](https://github.com/named-data/ndn-cxx/blob/master/COPYING).
+
+While the license does not require it, we really would appreciate it if others would share
+their contributions to the library if they are willing to do so under the same license.
diff --git a/docs/code-style.rst b/docs/code-style.rst
index c6d2c5a..cd21585 100644
--- a/docs/code-style.rst
+++ b/docs/code-style.rst
@@ -1,5 +1,5 @@
-Code style and coding guidelines
-================================
+ndn-cxx Code Style and Coding Guidelines
+========================================
 
 Based on
 
diff --git a/docs/conf.py b/docs/conf.py
index c8f55dc..60baa9a 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -45,7 +45,7 @@
 master_doc = 'index'
 
 # General information about the project.
-project = u'C++ library for Named Data Networking'
+project = u'NDN C++ library with eXperimental eXtensions'
 copyright = u'2014, Named Data Networking Project'
 
 # The version info for the project you're documenting, acts as replacement for
@@ -53,9 +53,9 @@
 # built documents.
 #
 # The short X.Y version.
-version = '0.4.0'
+version = '0.1.0'
 # The full version, including alpha/beta/rc tags.
-release = '0.4.0'
+release = '0.1.0'
 
 # The language for content autogenerated by Sphinx. Refer to documentation
 # for a list of supported languages.
@@ -179,7 +179,7 @@
 html_file_suffix = ".html"
 
 # Output file base name for HTML help builder.
-htmlhelp_basename = 'ndn-cpp-dev-docs'
+htmlhelp_basename = 'ndn-cxx-docs'
 
 
 # -- Options for LaTeX output ---------------------------------------------
@@ -199,7 +199,7 @@
 # (source start file, target name, title,
 #  author, documentclass [howto, manual, or own class]).
 latex_documents = [
-  ('index', 'ndn-cpp-dev-docs.tex', u'C++ library for Named Data Networking',
+  ('index', 'ndn-cxx-docs.tex', u'NDN C++ library with eXperimental eXtensions',
    u'Named Data Networking Project', 'manual'),
 ]
 
diff --git a/docs/doxygen.conf b/docs/doxygen.conf
index 325461f..9998dd2 100644
--- a/docs/doxygen.conf
+++ b/docs/doxygen.conf
@@ -32,13 +32,13 @@
 # title of most generated pages and in a few other places.
 # The default value is: My Project.
 
-PROJECT_NAME           = "C++ library for Named Data Networking"
+PROJECT_NAME           = "NDN C++ library with eXperimental eXtensions"
 
 # The PROJECT_NUMBER tag can be used to enter a project or revision number. This
 # could be handy for archiving the generated documentation or if some version
 # control system is used.
 
-PROJECT_NUMBER         =
+PROJECT_NUMBER         = 0.1.0
 
 # Using the PROJECT_BRIEF tag one can provide an optional one line description
 # for a project that appears at the top of each page and should give viewer a
diff --git a/docs/index.rst b/docs/index.rst
index 58462f4..1e73bdf 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -1,5 +1,5 @@
-C++ library for Named Data Networking
-=====================================
+NDN C++ library with eXperimental eXtensions
+============================================
 
 `API documentation (doxygen) <doxygen/annotated.html>`_
 
diff --git a/examples/consumer-with-timer.cpp b/examples/consumer-with-timer.cpp
index 0f3890c..53c797e 100644
--- a/examples/consumer-with-timer.cpp
+++ b/examples/consumer-with-timer.cpp
@@ -5,9 +5,9 @@
  * BSD License, see COPYING for copyright and distribution information.
  */
 
-// correct way to include NDN-CPP headers
-// #include <ndn-cpp-dev/face.hpp>
-// #include <ndn-cpp-dev/util/scheduler.hpp>
+// correct way to include ndn-cxx headers
+// #include <ndn-cxx/face.hpp>
+// #include <ndn-cxx/util/scheduler.hpp>
 #include "face.hpp"
 #include "util/scheduler.hpp"
 
diff --git a/examples/consumer.cpp b/examples/consumer.cpp
index bb4ab31..bb413d5 100644
--- a/examples/consumer.cpp
+++ b/examples/consumer.cpp
@@ -5,8 +5,8 @@
  * BSD License, see COPYING for copyright and distribution information.
  */
 
-// correct way to include NDN-CPP headers
-// #include <ndn-cpp-dev/face.hpp>
+// correct way to include ndn-cxx headers
+// #include <ndn-cxx/face.hpp>
 #include "face.hpp"
 
 // Enclosing code in ndn simplifies coding (can also use `using namespace ndn`)
diff --git a/examples/producer.cpp b/examples/producer.cpp
index 63bb085..9fe9cd6 100644
--- a/examples/producer.cpp
+++ b/examples/producer.cpp
@@ -5,9 +5,9 @@
  * BSD License, see COPYING for copyright and distribution information.
  */
 
-// correct way to include NDN-CPP headers
-// #include <ndn-cpp-dev/face.hpp>
-// #include <ndn-cpp-dev/security/key-chain.hpp>
+// correct way to include ndn-cxx headers
+// #include <ndn-cxx/face.hpp>
+// #include <ndn-cxx/security/key-chain.hpp>
 
 #include "face.hpp"
 #include "security/key-chain.hpp"
diff --git a/examples/wscript b/examples/wscript
index a8126fc..7db133e 100644
--- a/examples/wscript
+++ b/examples/wscript
@@ -7,6 +7,6 @@
         bld(features=['cxx', 'cxxprogram'],
             target = '%s' % (str(app.change_ext('','.cpp'))),
             source = app,
-            use = 'ndn-cpp-dev',
+            use = 'ndn-cxx',
             install_path = None,
-            )        
+            )
diff --git a/libndn-cpp-dev.pc.in b/libndn-cpp-dev.pc.in
deleted file mode 100644
index be52ba0..0000000
--- a/libndn-cpp-dev.pc.in
+++ /dev/null
@@ -1,10 +0,0 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: libndn-cpp-dev
-Description: Development version of C++ API for NDN (NDN-TLV packet format)
-Version: @VERSION@
-Libs: -L${libdir} @EXTRA_LINKFLAGS@ @EXTRA_LDFLAGS@ -lndn-cpp-dev @EXTRA_LIBS@ @EXTRA_FRAMEWORKS@
-Cflags: -I${includedir} @EXTRA_CXXFLAGS@ @EXTRA_INCLUDES@
diff --git a/libndn-cxx.pc.in b/libndn-cxx.pc.in
new file mode 100644
index 0000000..4db805f
--- /dev/null
+++ b/libndn-cxx.pc.in
@@ -0,0 +1,10 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: libndn-cxx
+Description: NDN C++ library with eXperimental eXtensions
+Version: @VERSION@
+Libs: -L${libdir} @EXTRA_LINKFLAGS@ @EXTRA_LDFLAGS@ -lndn-cxx @EXTRA_LIBS@ @EXTRA_FRAMEWORKS@
+Cflags: -I${includedir} @EXTRA_CXXFLAGS@ @EXTRA_INCLUDES@
diff --git a/src/common.hpp b/src/common.hpp
index b6de7b9..f8f4255 100644
--- a/src/common.hpp
+++ b/src/common.hpp
@@ -1,14 +1,13 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
 /**
- * Copyright (C) 2013 Regents of the University of California.
- * @author: Jeff Thompson <jefft0@remap.ucla.edu>
+ * Copyright (C) 2013-2014 Regents of the University of California.
  * See COPYING for copyright and distribution information.
  */
 
 #ifndef NDN_COMMON_HPP
 #define NDN_COMMON_HPP
 
-#include "ndn-cpp-config.hpp"
+#include "ndn-cxx-config.hpp"
 #include <stdint.h>
 // TODO: Is stddef.h portable?
 #include <stddef.h>
@@ -45,16 +44,16 @@
 #define DEPRECATED(func) func
 #endif
 
-#ifdef NDN_CPP_HAVE_CXX11
+#ifdef NDN_CXX_HAVE_CXX11
 
 #if defined(__GNUC__)
 #  if !defined(__GXX_EXPERIMENTAL_CXX0X__) && __cplusplus < 201103L
-#    error "NDN-CPP-DEV library is configured and compiled in C++11 mode, but the current compiler is not C++11 enabled"
+#    error "NDN-CXX library is configured and compiled in C++11 mode, but the current compiler is not C++11 enabled"
 #  endif // !defined(__GXX_EXPERIMENTAL_CXX0X__) && __cplusplus < 201103L
 #endif // defined(__GNUC__)
 
 #if defined(__clang__) && __cplusplus < 201103L
-#  error "NDN-CPP-DEV library is configured and compiled in C++11 mode, but the current compiler is not C++11 enabled"
+#  error "NDN-CXX library is configured and compiled in C++11 mode, but the current compiler is not C++11 enabled"
 #endif // defined(__clang__) && (__cplusplus < 201103L)
 
 
@@ -111,7 +110,7 @@
 
 } // namespace ndn
 
-#endif // NDN_CPP_HAVE_CXX11
+#endif // NDN_CXX_HAVE_CXX11
 
 namespace ndn {
 
diff --git a/src/security/key-chain.hpp b/src/security/key-chain.hpp
index 5143a4a..40ffd3c 100644
--- a/src/security/key-chain.hpp
+++ b/src/security/key-chain.hpp
@@ -25,7 +25,7 @@
 #include "sec-tpm-file.hpp"
 #include "sec-tpm-memory.hpp"
 
-#ifdef NDN_CPP_HAVE_OSX_SECURITY
+#ifdef NDN_CXX_HAVE_OSX_SECURITY
 #include "sec-tpm-osx.hpp"
 #endif
 
@@ -662,7 +662,7 @@
 
 
 
-#if defined(NDN_CPP_HAVE_OSX_SECURITY) and defined(NDN_CPP_WITH_OSX_KEYCHAIN)
+#if defined(NDN_CXX_HAVE_OSX_SECURITY) and defined(NDN_CXX_WITH_OSX_KEYCHAIN)
 
 namespace ndn {
 
@@ -678,6 +678,6 @@
 
 } // namespace ndn
 
-#endif //NDN_CPP_HAVE_OSX_SECURITY
+#endif // NDN_CXX_HAVE_OSX_SECURITY
 
-#endif //NDN_SECURITY_KEY_CHAIN_HPP
+#endif // NDN_SECURITY_KEY_CHAIN_HPP
diff --git a/src/security/sec-public-info-sqlite3.cpp b/src/security/sec-public-info-sqlite3.cpp
index 4df238c..04938b4 100644
--- a/src/security/sec-public-info-sqlite3.cpp
+++ b/src/security/sec-public-info-sqlite3.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
 /**
- * Copyright (C) 2013 Regents of the University of California.
+ * Copyright (c) 2013-2014 Regents of the University of California.
  * @author: Yingdi Yu <yingdi@cs.ucla.edu>
  * @author: Jeff Thompson <jefft0@remap.ucla.edu>
  * See COPYING for copyright and distribution information.
@@ -92,7 +92,7 @@
   /// @todo Add define for windows/unix in wscript. The following may completely fail on windows
   int res = sqlite3_open_v2((identityDir / "ndnsec-public-info.db").c_str(), &m_database,
                             SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE,
-#ifdef NDN_CPP_DISABLE_SQLITE3_FS_LOCKING
+#ifdef NDN_CXX_DISABLE_SQLITE3_FS_LOCKING
                                                        "unix-dotfile"
 #else
                             0
diff --git a/src/util/config-file.cpp b/src/util/config-file.cpp
index c80ddc6..ea56d12 100644
--- a/src/util/config-file.cpp
+++ b/src/util/config-file.cpp
@@ -45,15 +45,15 @@
         }
     }
 
-#ifdef NDN_CPP_SYSCONFDIR
-  path sysconfdir(NDN_CPP_SYSCONFDIR);
+#ifdef NDN_CXX_SYSCONFDIR
+  path sysconfdir(NDN_CXX_SYSCONFDIR);
   sysconfdir /= "ndn/client.conf";
 
   if (exists(sysconfdir))
     {
       return absolute(sysconfdir);
     }
-#endif // NDN_CPP_SYSCONFDIR
+#endif // NDN_CXX_SYSCONFDIR
 
   path etc("/etc/ndn/client.conf");
   if (exists(etc))
diff --git a/src/util/logging.cpp b/src/util/logging.cpp
index 0b969a0..113e3a9 100644
--- a/src/util/logging.cpp
+++ b/src/util/logging.cpp
@@ -10,7 +10,7 @@
 
 #include "logging.hpp"
 
-#ifdef NDN_CPP_HAVE_LOG4CXX
+#ifdef NDN_CXX_HAVE_LOG4CXX
 
 #include <log4cxx/logger.h>
 #include <log4cxx/basicconfigurator.h>
@@ -46,4 +46,4 @@
   configured = true;
 }
 
-#endif
+#endif // NDN_CXX_HAVE_LOG4CXX
diff --git a/src/util/logging.hpp b/src/util/logging.hpp
index 9370af0..5ee958c 100644
--- a/src/util/logging.hpp
+++ b/src/util/logging.hpp
@@ -11,7 +11,7 @@
 
 #include "../common.hpp"
 
-#ifdef NDN_CPP_HAVE_LOG4CXX
+#ifdef NDN_CXX_HAVE_LOG4CXX
 
 #include <log4cxx/logger.h>
 
@@ -48,7 +48,7 @@
 void
 INIT_LOGGERS()
 
-#else // else NDN_CPP_HAVE_LOG4CXX
+#else // else NDN_CXX_HAVE_LOG4CXX
 
 #define INIT_LOGGER(name) struct LOGGING_DISABLED
 #define _LOG_FUNCTION(x)
@@ -67,12 +67,12 @@
 #include <iostream>
 
 #define _LOG_DEBUG(x) \
-  { std::clog << s.substr(0, s.size() - 1) << " " << x << std::endl; }
+  { std::clog << x << std::endl; }
 
 #else
 #define _LOG_DEBUG(x)
 #endif
 
-#endif // NDN_CPP_HAVE_LOG4CXX
+#endif // NDN_CXX_HAVE_LOG4CXX
 
 #endif
diff --git a/tests-integrated/wscript b/tests-integrated/wscript
index 92f1605..75f6b5c 100644
--- a/tests-integrated/wscript
+++ b/tests-integrated/wscript
@@ -10,7 +10,7 @@
         features="cxx cxxprogram",
         source=bld.path.ant_glob(['**/*.cpp'],
                                  excl=['**/*-osx.cpp', '**/*-sqlite3.cpp']),
-        use='ndn-cpp-dev',
+        use='ndn-cxx',
         includes='.',
         install_path=None,
         )
diff --git a/tests/security/identity-fixture.cpp b/tests/security/identity-fixture.cpp
index 420b15f..460d3b0 100644
--- a/tests/security/identity-fixture.cpp
+++ b/tests/security/identity-fixture.cpp
@@ -28,7 +28,7 @@
       m_hasOldDefaultIdentity = false;
     }
 
-    m_newIdentity.set("/ndn-cpp-dev-test-identity");
+    m_newIdentity.set("/ndn-cxx-test-identity");
     m_newIdentity.appendVersion();
 
     // create the new identity and self-signed certificate
diff --git a/tests/wscript b/tests/wscript
index db65313..cbe5e88 100644
--- a/tests/wscript
+++ b/tests/wscript
@@ -10,7 +10,7 @@
         features="cxx cxxprogram",
         source=bld.path.ant_glob(['**/*.cpp'],
                                  excl=['**/*-osx.cpp', '**/*-sqlite3.cpp']),
-        use='ndn-cpp-dev',
+        use='ndn-cxx',
         includes='.',
         install_path=None,
         )
diff --git a/tools/wscript b/tools/wscript
index bc28425..eaa35cc 100644
--- a/tools/wscript
+++ b/tools/wscript
@@ -10,12 +10,13 @@
         bld(features=['cxx', 'cxxprogram'],
             target = '%s' % (str(app.change_ext('','.cpp'))),
             source = app,
-            use = 'ndn-cpp-dev',
-            )        
+            use = 'ndn-cxx',
+            )
 
     bld (features = "subst",
          source = bld.path.ant_glob(['wrapper/*.sh']),
-         target = ['%s' % node.change_ext('', '.sh') for node in bld.path.ant_glob(['wrapper/*.sh'])],
+         target = ['%s' % node.change_ext('', '.sh')
+                   for node in bld.path.ant_glob(['wrapper/*.sh'])],
          install_path = "${BINDIR}",
          chmod = 0755,
         )
diff --git a/wscript b/wscript
index 836558e..ba5a327 100644
--- a/wscript
+++ b/wscript
@@ -1,9 +1,9 @@
 # -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-
 
-VERSION = '0.4.0'
-APPNAME = "ndn-cpp-dev"
-PACKAGE_BUGREPORT = "http://redmine.named-data.net/projects/ndn-cpp-dev"
-PACKAGE_URL = "https://github.com/named-data/ndn-cpp-dev"
+VERSION = '0.1.0'
+APPNAME = "ndn-cxx"
+PACKAGE_BUGREPORT = "http://redmine.named-data.net/projects/ndn-cxx"
+PACKAGE_URL = "https://github.com/named-data/ndn-cxx"
 
 from waflib import Logs, Utils
 
@@ -21,8 +21,6 @@
     opt.add_option('--with-log4cxx', action='store_true', default=False, dest='log4cxx',
                    help='''Compile with log4cxx logging support''')
 
-    opt.add_option('--with-c++11', action='store_true', default=False, dest='use_cxx11',
-                   help='''Use C++11 features, even if available in the compiler''')
     opt.add_option('--without-tools', action='store_false', default=True, dest='with_tools',
                    help='''Do not build tools''')
 
@@ -98,14 +96,14 @@
 
     conf.define('SYSCONFDIR', conf.env['SYSCONFDIR'])
 
-    conf.write_config_header('src/ndn-cpp-config.hpp', define_prefix='NDN_CPP_')
+    conf.write_config_header('src/ndn-cxx-config.hpp', define_prefix='NDN_CXX_')
 
 def build(bld):
-    libndn_cpp = bld(
+    libndn_cxx = bld(
         features=['cxx', 'cxxstlib'], # 'cxxshlib',
         # vnum="0.3.0",
-        target="ndn-cpp-dev",
-        name="ndn-cpp-dev",
+        target="ndn-cxx",
+        name="ndn-cxx",
         source=bld.path.ant_glob('src/**/*.cpp',
                                    excl=['src/**/*-osx.cpp', 'src/**/*-sqlite3.cpp']),
         use='BOOST OPENSSL LOG4CXX CRYPTOPP SQLITE3 RT PIC PTHREAD',
@@ -115,15 +113,15 @@
         )
 
     if bld.env['WITH_PCH']:
-        libndn_cpp.pch="src/common.hpp"
+        libndn_cxx.pch="src/common.hpp"
 
     if bld.env['HAVE_OSX_SECURITY']:
-        libndn_cpp.source += bld.path.ant_glob('src/**/*-osx.cpp')
-        libndn_cpp.mac_app = True
-        libndn_cpp.use += " OSX_COREFOUNDATION OSX_SECURITY"
+        libndn_cxx.source += bld.path.ant_glob('src/**/*-osx.cpp')
+        libndn_cxx.mac_app = True
+        libndn_cxx.use += " OSX_COREFOUNDATION OSX_SECURITY"
 
     # In case we want to make it optional later
-    libndn_cpp.source += bld.path.ant_glob('src/**/*-sqlite3.cpp')
+    libndn_cxx.source += bld.path.ant_glob('src/**/*-sqlite3.cpp')
 
     # Prepare flags that should go to pkgconfig file
     pkgconfig_libs = []
@@ -131,7 +129,7 @@
     pkgconfig_linkflags = []
     pkgconfig_includes = []
     pkgconfig_cxxflags = []
-    for lib in Utils.to_list(libndn_cpp.use):
+    for lib in Utils.to_list(libndn_cxx.use):
         if bld.env['LIB_%s' % lib]:
             pkgconfig_libs += Utils.to_list(bld.env['LIB_%s' % lib])
         if bld.env['LIBPATH_%s' % lib]:
@@ -152,8 +150,8 @@
         return [set.setdefault(e,e) for e in alist if e not in set]
 
     pkconfig = bld(features="subst",
-         source="libndn-cpp-dev.pc.in",
-         target="libndn-cpp-dev.pc",
+         source="libndn-cxx.pc.in",
+         target="libndn-cxx.pc",
          install_path="${LIBDIR}/pkgconfig",
          VERSION=VERSION,
 
@@ -178,11 +176,11 @@
         bld.recurse("examples")
 
     headers = bld.path.ant_glob(['src/**/*.hpp'])
-    bld.install_files("%s/ndn-cpp-dev" % bld.env['INCLUDEDIR'], headers,
+    bld.install_files("%s/ndn-cxx" % bld.env['INCLUDEDIR'], headers,
                       relative_trick=True, cwd=bld.path.find_node('src'))
 
-    bld.install_files("%s/ndn-cpp-dev" % bld.env['INCLUDEDIR'],
-                      bld.path.find_resource('src/ndn-cpp-config.hpp'))
+    bld.install_files("%s/ndn-cxx" % bld.env['INCLUDEDIR'],
+                      bld.path.find_resource('src/ndn-cxx-config.hpp'))
 
     bld.install_files("${SYSCONFDIR}/ndn", "client.conf.sample")
 
