diff --git a/examples/apptest/example_service_application.cc b/examples/apptest/example_service_application.cc
index e1ef72f..9efceba 100644
--- a/examples/apptest/example_service_application.cc
+++ b/examples/apptest/example_service_application.cc
@@ -4,6 +4,8 @@
 
 #include "examples/apptest/example_service_application.h"
 
+#include <memory>
+
 #include "mojo/public/c/system/main.h"
 #include "mojo/public/cpp/application/application_connection.h"
 #include "mojo/public/cpp/application/application_runner.h"
@@ -30,6 +32,8 @@
 }  // namespace mojo
 
 MojoResult MojoMain(MojoHandle application_request) {
-  mojo::ApplicationRunner runner(new mojo::ExampleServiceApplication());
+  mojo::ApplicationRunner runner(
+      std::unique_ptr<mojo::ExampleServiceApplication>(
+          new mojo::ExampleServiceApplication()));
   return runner.Run(application_request);
 }
diff --git a/examples/audio_play_test/play_tone.cc b/examples/audio_play_test/play_tone.cc
index 8b65ef6..001f32e 100644
--- a/examples/audio_play_test/play_tone.cc
+++ b/examples/audio_play_test/play_tone.cc
@@ -243,6 +243,8 @@
 }  // namespace mojo
 
 MojoResult MojoMain(MojoHandle app_request) {
-  mojo::ApplicationRunner runner(new mojo::media::audio::examples::PlayToneApp);
+  mojo::ApplicationRunner runner(
+      std::unique_ptr<mojo::media::audio::examples::PlayToneApp>(
+          new mojo::media::audio::examples::PlayToneApp()));
   return runner.Run(app_request);
 }
diff --git a/examples/audio_play_test/play_wav.cc b/examples/audio_play_test/play_wav.cc
index d4706b0..3cc1ce6 100644
--- a/examples/audio_play_test/play_wav.cc
+++ b/examples/audio_play_test/play_wav.cc
@@ -563,6 +563,8 @@
 }  // namespace mojo
 
 MojoResult MojoMain(MojoHandle app_request) {
-  mojo::ApplicationRunner runner(new mojo::media::audio::examples::PlayWAVApp);
+  mojo::ApplicationRunner runner(
+      std::unique_ptr<mojo::media::audio::examples::PlayWAVApp>(
+          new mojo::media::audio::examples::PlayWAVApp()));
   return runner.Run(app_request);
 }
diff --git a/examples/bank_app/bank.cc b/examples/bank_app/bank.cc
index 11a06b5..753967c 100644
--- a/examples/bank_app/bank.cc
+++ b/examples/bank_app/bank.cc
@@ -2,6 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include <memory>
+
 #include "examples/bank_app/bank.mojom.h"
 #include "mojo/common/binding_set.h"
 #include "mojo/public/c/system/main.h"
@@ -92,6 +94,7 @@
 }  // namespace examples
 
 MojoResult MojoMain(MojoHandle application_request) {
-  mojo::ApplicationRunner runner(new examples::BankApp());
+  mojo::ApplicationRunner runner(
+      std::unique_ptr<examples::BankApp>(new examples::BankApp()));
   return runner.Run(application_request);
 }
diff --git a/examples/bank_app/customer.cc b/examples/bank_app/customer.cc
index b312d7d..a572de0 100644
--- a/examples/bank_app/customer.cc
+++ b/examples/bank_app/customer.cc
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include <stdio.h>
+#include <memory>
 
 #include "examples/bank_app/bank.mojom.h"
 #include "mojo/public/c/system/main.h"
@@ -54,6 +54,7 @@
 }  // namespace examples
 
 MojoResult MojoMain(MojoHandle application_request) {
-  mojo::ApplicationRunner runner(new examples::BankCustomer);
+  mojo::ApplicationRunner runner(
+      std::unique_ptr<examples::BankCustomer>(new examples::BankCustomer()));
   return runner.Run(application_request);
 }
diff --git a/examples/content_handler_demo/content_handler_demo.cc b/examples/content_handler_demo/content_handler_demo.cc
index df44a5c..aa6012d 100644
--- a/examples/content_handler_demo/content_handler_demo.cc
+++ b/examples/content_handler_demo/content_handler_demo.cc
@@ -4,6 +4,8 @@
 
 #include <stdio.h>
 
+#include <memory>
+
 #include "mojo/public/c/system/main.h"
 #include "mojo/public/cpp/application/application_delegate.h"
 #include "mojo/public/cpp/application/application_impl.h"
@@ -116,6 +118,8 @@
 }  // namespace mojo
 
 MojoResult MojoMain(MojoHandle application_request) {
-  mojo::ApplicationRunner runner(new mojo::examples::ContentHandlerApp);
+  mojo::ApplicationRunner runner(
+      std::unique_ptr<mojo::examples::ContentHandlerApp>(
+          new mojo::examples::ContentHandlerApp()));
   return runner.Run(application_request);
 }
diff --git a/examples/echo/echo_client.cc b/examples/echo/echo_client.cc
index f994dd9..5ff27cf 100644
--- a/examples/echo/echo_client.cc
+++ b/examples/echo/echo_client.cc
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include <stdio.h>
+#include <memory>
 
 #include "base/logging.h"
 #include "examples/echo/echo.mojom.h"
@@ -39,6 +39,8 @@
 }  // namespace mojo
 
 MojoResult MojoMain(MojoHandle application_request) {
-  mojo::ApplicationRunner runner(new mojo::examples::EchoClientDelegate);
+  mojo::ApplicationRunner runner(
+      std::unique_ptr<mojo::examples::EchoClientDelegate>(
+          new mojo::examples::EchoClientDelegate()));
   return runner.Run(application_request);
 }
diff --git a/examples/echo/echo_server.cc b/examples/echo/echo_server.cc
index 6ff79a6..43a975e 100644
--- a/examples/echo/echo_server.cc
+++ b/examples/echo/echo_server.cc
@@ -2,6 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include <memory>
+
 #include "examples/echo/echo.mojom.h"
 #include "mojo/common/binding_set.h"
 #include "mojo/public/c/system/main.h"
@@ -133,7 +135,8 @@
 
 MojoResult MojoMain(MojoHandle application_request) {
   // Uncomment one of the three servers at a time to see it work:
-  mojo::ApplicationRunner runner(new mojo::examples::MultiServer());
+  mojo::ApplicationRunner runner(std::unique_ptr<mojo::examples::MultiServer>(
+      new mojo::examples::MultiServer()));
   // mojo::ApplicationRunner runner(new mojo::examples::SingletonServer());
   // mojo::ApplicationRunner runner(new mojo::examples::OneAtATimeServer());
 
diff --git a/examples/indirect_service/indirect_integer_service.cc b/examples/indirect_service/indirect_integer_service.cc
index 67fe420..e4239a9 100644
--- a/examples/indirect_service/indirect_integer_service.cc
+++ b/examples/indirect_service/indirect_integer_service.cc
@@ -2,6 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include <memory>
+
 #include "examples/indirect_service/indirect_service_demo.mojom.h"
 #include "mojo/public/c/system/main.h"
 #include "mojo/public/cpp/application/application_connection.h"
@@ -71,7 +73,7 @@
 
 MojoResult MojoMain(MojoHandle application_request) {
   mojo::ApplicationRunner runner(
-      new mojo::examples::IndirectIntegerServiceAppDelegate);
+      std::unique_ptr<mojo::examples::IndirectIntegerServiceAppDelegate>(
+          new mojo::examples::IndirectIntegerServiceAppDelegate()));
   return runner.Run(application_request);
 }
-
diff --git a/examples/indirect_service/integer_service.cc b/examples/indirect_service/integer_service.cc
index 8399eb0..42f718f 100644
--- a/examples/indirect_service/integer_service.cc
+++ b/examples/indirect_service/integer_service.cc
@@ -2,6 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include <memory>
+
 #include "examples/indirect_service/indirect_service_demo.mojom.h"
 #include "mojo/public/c/system/main.h"
 #include "mojo/public/cpp/application/application_connection.h"
@@ -48,7 +50,9 @@
 }  // namespace mojo
 
 MojoResult MojoMain(MojoHandle application_request) {
-  mojo::ApplicationRunner runner(new mojo::examples::IntegerServiceAppDelegate);
+  mojo::ApplicationRunner runner(
+      std::unique_ptr<mojo::examples::IntegerServiceAppDelegate>(
+          new mojo::examples::IntegerServiceAppDelegate));
   return runner.Run(application_request);
 }
 
diff --git a/examples/spinning_cube/spinning_cube_app.cc b/examples/spinning_cube/spinning_cube_app.cc
index 613510d..a018e3a 100644
--- a/examples/spinning_cube/spinning_cube_app.cc
+++ b/examples/spinning_cube/spinning_cube_app.cc
@@ -2,8 +2,9 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include <stdio.h>
-#include <string>
+#include <assert.h>
+
+#include <memory>
 
 #include "base/bind.h"
 #include "base/memory/scoped_ptr.h"
@@ -91,6 +92,7 @@
 }  // namespace examples
 
 MojoResult MojoMain(MojoHandle application_request) {
-  mojo::ApplicationRunner runner(new examples::SpinningCubeApp);
+  mojo::ApplicationRunner runner(std::unique_ptr<examples::SpinningCubeApp>(
+      new examples::SpinningCubeApp()));
   return runner.Run(application_request);
 }
diff --git a/examples/wget/wget.cc b/examples/wget/wget.cc
index 575d8cb..32257b4 100644
--- a/examples/wget/wget.cc
+++ b/examples/wget/wget.cc
@@ -4,6 +4,8 @@
 
 #include <stdio.h>
 
+#include <memory>
+
 #include "mojo/public/c/system/main.h"
 #include "mojo/public/cpp/application/application_delegate.h"
 #include "mojo/public/cpp/application/application_impl.h"
@@ -109,6 +111,7 @@
 }  // namespace mojo
 
 MojoResult MojoMain(MojoHandle application_request) {
-  mojo::ApplicationRunner runner(new mojo::examples::WGetApp);
+  mojo::ApplicationRunner runner(
+      std::unique_ptr<mojo::examples::WGetApp>(new mojo::examples::WGetApp()));
   return runner.Run(application_request);
 }
diff --git a/mojo/public/cpp/application/application_runner.h b/mojo/public/cpp/application/application_runner.h
index aa351b1..5a2ea77 100644
--- a/mojo/public/cpp/application/application_runner.h
+++ b/mojo/public/cpp/application/application_runner.h
@@ -5,6 +5,8 @@
 #ifndef MOJO_PUBLIC_CPP_APPLICATION_APPLICATION_RUNNER_H_
 #define MOJO_PUBLIC_CPP_APPLICATION_APPLICATION_RUNNER_H_
 
+#include <memory>
+
 #include "mojo/public/c/environment/logger.h"
 #include "mojo/public/cpp/system/core.h"
 
@@ -25,8 +27,7 @@
 // ultimately Quit().
 class ApplicationRunner {
  public:
-  // Takes ownership of |delegate|.
-  explicit ApplicationRunner(ApplicationDelegate* delegate);
+  explicit ApplicationRunner(std::unique_ptr<ApplicationDelegate> delegate);
   ~ApplicationRunner();
 
   // This replaces the underlying logger implementation with the one provided.
@@ -43,7 +44,7 @@
   MojoResult Run(MojoHandle application_request);
 
  private:
-  ApplicationDelegate* delegate_;
+  std::unique_ptr<ApplicationDelegate> delegate_;
 
   MOJO_DISALLOW_COPY_AND_ASSIGN(ApplicationRunner);
 };
diff --git a/mojo/public/cpp/application/lib/application_runner.cc b/mojo/public/cpp/application/lib/application_runner.cc
index 214d09f..3654715 100644
--- a/mojo/public/cpp/application/lib/application_runner.cc
+++ b/mojo/public/cpp/application/lib/application_runner.cc
@@ -20,8 +20,9 @@
   RunLoop::current()->Quit();
 }
 
-ApplicationRunner::ApplicationRunner(ApplicationDelegate* delegate)
-    : delegate_(delegate) {}
+ApplicationRunner::ApplicationRunner(
+    std::unique_ptr<ApplicationDelegate> delegate)
+    : delegate_(std::move(delegate)) {}
 
 ApplicationRunner::~ApplicationRunner() {
   assert(!delegate_);
@@ -47,13 +48,13 @@
   Environment env;
   {
     RunLoop loop;
-    ApplicationImpl app(delegate_, MakeRequest<Application>(MakeScopedHandle(
-                                       MessagePipeHandle(app_request_handle))));
+    ApplicationImpl app(delegate_.get(),
+                        MakeRequest<Application>(MakeScopedHandle(
+                            MessagePipeHandle(app_request_handle))));
     loop.Run();
   }
 
-  delete delegate_;
-  delegate_ = nullptr;
+  delegate_.reset();
 
   g_running = false;
 
diff --git a/mojo/public/cpp/bindings/tests/versioning_test_service.cc b/mojo/public/cpp/bindings/tests/versioning_test_service.cc
index 0896b8c..419fa3a 100644
--- a/mojo/public/cpp/bindings/tests/versioning_test_service.cc
+++ b/mojo/public/cpp/bindings/tests/versioning_test_service.cc
@@ -3,6 +3,7 @@
 // found in the LICENSE file.
 
 #include <map>
+#include <memory>
 
 #include "mojo/public/c/system/main.h"
 #include "mojo/public/cpp/application/application_connection.h"
@@ -119,7 +120,8 @@
 
 MojoResult MojoMain(MojoHandle application_request) {
   mojo::ApplicationRunner runner(
-      new mojo::test::versioning::HumanResourceSystemServer());
+      std::unique_ptr<mojo::test::versioning::HumanResourceSystemServer>(
+          new mojo::test::versioning::HumanResourceSystemServer()));
 
   return runner.Run(application_request);
 }
diff --git a/services/authentication/dummy_authentication_app.cc b/services/authentication/dummy_authentication_app.cc
index b98c15e..a829b74 100644
--- a/services/authentication/dummy_authentication_app.cc
+++ b/services/authentication/dummy_authentication_app.cc
@@ -2,6 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include <memory>
+
 #include "mojo/common/binding_set.h"
 #include "mojo/public/c/system/main.h"
 #include "mojo/public/cpp/application/application_connection.h"
@@ -57,6 +59,7 @@
 
 MojoResult MojoMain(MojoHandle application_request) {
   mojo::ApplicationRunner runner(
-      new authentication::DummyAuthenticationApplication);
+      std::unique_ptr<authentication::DummyAuthenticationApplication>(
+          new authentication::DummyAuthenticationApplication()));
   return runner.Run(application_request);
 }
diff --git a/services/device_info/device_info.cc b/services/device_info/device_info.cc
index 0dfdfbc..54fe54c 100644
--- a/services/device_info/device_info.cc
+++ b/services/device_info/device_info.cc
@@ -3,6 +3,7 @@
 // found in the LICENSE file.
 
 #include <cstdlib>
+#include <memory>
 
 #include "mojo/common/binding_set.h"
 #include "mojo/public/c/system/main.h"
@@ -51,6 +52,8 @@
 }  // namespace mojo
 
 MojoResult MojoMain(MojoHandle application_request) {
-  mojo::ApplicationRunner runner(new mojo::services::device_info::DeviceInfo());
+  mojo::ApplicationRunner runner(
+      std::unique_ptr<mojo::services::device_info::DeviceInfo>(
+          new mojo::services::device_info::DeviceInfo()));
   return runner.Run(application_request);
 }
diff --git a/services/http_server/http_server_app.cc b/services/http_server/http_server_app.cc
index 8ff7b12..fa063fa 100644
--- a/services/http_server/http_server_app.cc
+++ b/services/http_server/http_server_app.cc
@@ -2,7 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "base/memory/scoped_ptr.h"
+#include <memory>
+
 #include "mojo/public/c/system/main.h"
 #include "mojo/public/cpp/application/application_delegate.h"
 #include "mojo/public/cpp/application/application_impl.h"
@@ -41,12 +42,13 @@
   }
 
   mojo::ApplicationImpl* app_;
-  scoped_ptr<HttpServerFactoryImpl> http_server_factory_;
+  std::unique_ptr<HttpServerFactoryImpl> http_server_factory_;
 };
 
 }  // namespace http_server
 
 MojoResult MojoMain(MojoHandle application_request) {
-  mojo::ApplicationRunner runner(new http_server::HttpServerApp);
+  mojo::ApplicationRunner runner(std::unique_ptr<http_server::HttpServerApp>(
+      new http_server::HttpServerApp()));
   return runner.Run(application_request);
 }
diff --git a/services/nacl/nonsfi/pnacl_compile.cc b/services/nacl/nonsfi/pnacl_compile.cc
index 63ca9ca..acb2757 100644
--- a/services/nacl/nonsfi/pnacl_compile.cc
+++ b/services/nacl/nonsfi/pnacl_compile.cc
@@ -2,6 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include <memory>
+
 #include "base/logging.h"
 #include "mojo/nacl/nonsfi/file_util.h"
 #include "mojo/nacl/nonsfi/nexe_launcher_nonsfi.h"
@@ -60,6 +62,7 @@
 }  // namespace mojo
 
 MojoResult MojoMain(MojoHandle application_request) {
-  mojo::ApplicationRunner runner(new mojo::nacl::MultiPexeCompiler());
+  mojo::ApplicationRunner runner(std::unique_ptr<mojo::nacl::MultiPexeCompiler>(
+      new mojo::nacl::MultiPexeCompiler()));
   return runner.Run(application_request);
 }
diff --git a/services/nacl/nonsfi/pnacl_link.cc b/services/nacl/nonsfi/pnacl_link.cc
index 3a3ddfe..509495c 100644
--- a/services/nacl/nonsfi/pnacl_link.cc
+++ b/services/nacl/nonsfi/pnacl_link.cc
@@ -2,6 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include <memory>
+
 #include "base/logging.h"
 #include "mojo/nacl/nonsfi/file_util.h"
 #include "mojo/nacl/nonsfi/nexe_launcher_nonsfi.h"
@@ -59,6 +61,7 @@
 }  // namespace mojo
 
 MojoResult MojoMain(MojoHandle application_request) {
-  mojo::ApplicationRunner runner(new mojo::nacl::MultiPexeLinker());
+  mojo::ApplicationRunner runner(std::unique_ptr<mojo::nacl::MultiPexeLinker>(
+      new mojo::nacl::MultiPexeLinker()));
   return runner.Run(application_request);
 }
diff --git a/services/test_service/test_request_tracker_application.cc b/services/test_service/test_request_tracker_application.cc
index 6f8f049..6cfd204 100644
--- a/services/test_service/test_request_tracker_application.cc
+++ b/services/test_service/test_request_tracker_application.cc
@@ -4,7 +4,7 @@
 
 #include "services/test_service/test_request_tracker_application.h"
 
-#include <assert.h>
+#include <memory>
 
 #include "mojo/public/c/system/main.h"
 #include "mojo/public/cpp/application/application_connection.h"
@@ -58,6 +58,7 @@
 
 MojoResult MojoMain(MojoHandle application_request) {
   mojo::ApplicationRunner runner(
-      new mojo::test::TestRequestTrackerApplication);
+      std::unique_ptr<mojo::test::TestRequestTrackerApplication>(
+          new mojo::test::TestRequestTrackerApplication()));
   return runner.Run(application_request);
 }
diff --git a/services/test_service/test_service_application.cc b/services/test_service/test_service_application.cc
index f168cb6..b288d98 100644
--- a/services/test_service/test_service_application.cc
+++ b/services/test_service/test_service_application.cc
@@ -6,6 +6,8 @@
 
 #include <assert.h>
 
+#include <memory>
+
 #include "mojo/public/c/system/main.h"
 #include "mojo/public/cpp/application/application_connection.h"
 #include "mojo/public/cpp/application/application_runner.h"
@@ -17,11 +19,9 @@
 namespace test {
 
 TestServiceApplication::TestServiceApplication()
-    : ref_count_(0), app_impl_(nullptr) {
-}
+    : ref_count_(0), app_impl_(nullptr) {}
 
-TestServiceApplication::~TestServiceApplication() {
-}
+TestServiceApplication::~TestServiceApplication() {}
 
 void TestServiceApplication::Initialize(ApplicationImpl* app) {
   app_impl_ = app;
@@ -61,6 +61,8 @@
 }  // namespace mojo
 
 MojoResult MojoMain(MojoHandle application_request) {
-  mojo::ApplicationRunner runner(new mojo::test::TestServiceApplication);
+  mojo::ApplicationRunner runner(
+      std::unique_ptr<mojo::test::TestServiceApplication>(
+          new mojo::test::TestServiceApplication()));
   return runner.Run(application_request);
 }
diff --git a/shell/test/pingable_app.cc b/shell/test/pingable_app.cc
index fe49993..f65b682 100644
--- a/shell/test/pingable_app.cc
+++ b/shell/test/pingable_app.cc
@@ -2,6 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include <memory>
+
 #include "mojo/public/c/system/main.h"
 #include "mojo/public/cpp/application/application_delegate.h"
 #include "mojo/public/cpp/application/application_impl.h"
@@ -65,6 +67,7 @@
 };
 
 MojoResult MojoMain(MojoHandle application_request) {
-  mojo::ApplicationRunner runner(new PingableApp);
+  mojo::ApplicationRunner runner(
+      std::unique_ptr<PingableApp>(new PingableApp()));
   return runner.Run(application_request);
 }
