diff --git a/examples/content_handler_demo/content_handler_demo.cc b/examples/content_handler_demo/content_handler_demo.cc
index fc12891..fb322eb 100644
--- a/examples/content_handler_demo/content_handler_demo.cc
+++ b/examples/content_handler_demo/content_handler_demo.cc
@@ -4,13 +4,12 @@
 
 #include <stdio.h>
 
-#include <memory>
 #include <utility>
 
 #include "mojo/public/c/system/main.h"
-#include "mojo/public/cpp/application/application_delegate.h"
-#include "mojo/public/cpp/application/application_impl.h"
-#include "mojo/public/cpp/application/application_runner.h"
+#include "mojo/public/cpp/application/application_impl_base.h"
+#include "mojo/public/cpp/application/run_application.h"
+#include "mojo/public/cpp/application/service_provider_impl.h"
 #include "mojo/public/cpp/bindings/strong_binding.h"
 #include "mojo/public/cpp/system/wait.h"
 #include "mojo/services/content_handler/interfaces/content_handler.mojom.h"
@@ -92,15 +91,12 @@
   MOJO_DISALLOW_COPY_AND_ASSIGN(ContentHandlerImpl);
 };
 
-class ContentHandlerApp : public ApplicationDelegate {
+class ContentHandlerApp : public ApplicationImplBase {
  public:
   ContentHandlerApp() {}
   ~ContentHandlerApp() override {}
 
-  void Initialize(ApplicationImpl* app) override {}
-
-  bool ConfigureIncomingConnection(
-      ServiceProviderImpl* service_provider_impl) override {
+  bool OnAcceptConnection(ServiceProviderImpl* service_provider_impl) override {
     service_provider_impl->AddService<ContentHandler>(
         [](const ConnectionContext& connection_context,
            InterfaceRequest<ContentHandler> content_handler_request) {
@@ -117,8 +113,6 @@
 }  // namespace mojo
 
 MojoResult MojoMain(MojoHandle application_request) {
-  mojo::ApplicationRunner runner(
-      std::unique_ptr<mojo::examples::ContentHandlerApp>(
-          new mojo::examples::ContentHandlerApp()));
-  return runner.Run(application_request);
+  mojo::examples::ContentHandlerApp content_handler_app;
+  return mojo::RunMainApplication(application_request, &content_handler_app);
 }
diff --git a/examples/echo/echo_server.cc b/examples/echo/echo_server.cc
index a920bdb..093705c 100644
--- a/examples/echo/echo_server.cc
+++ b/examples/echo/echo_server.cc
@@ -7,8 +7,8 @@
 #include "examples/echo/echo.mojom.h"
 #include "mojo/common/binding_set.h"
 #include "mojo/public/c/system/main.h"
-#include "mojo/public/cpp/application/application_delegate.h"
-#include "mojo/public/cpp/application/application_runner.h"
+#include "mojo/public/cpp/application/application_impl_base.h"
+#include "mojo/public/cpp/application/run_application.h"
 #include "mojo/public/cpp/application/service_provider_impl.h"
 #include "mojo/public/cpp/bindings/strong_binding.h"
 
@@ -50,13 +50,12 @@
 };
 
 // MultiServer creates a new object to handle each message pipe.
-class MultiServer : public mojo::ApplicationDelegate {
+class MultiServer : public mojo::ApplicationImplBase {
  public:
   MultiServer() {}
 
-  // From ApplicationDelegate
-  bool ConfigureIncomingConnection(
-      ServiceProviderImpl* service_provider_impl) override {
+  // From ApplicationImplBase
+  bool OnAcceptConnection(ServiceProviderImpl* service_provider_impl) override {
     service_provider_impl->AddService<Echo>(
         [](const mojo::ConnectionContext& connection_context,
            mojo::InterfaceRequest<Echo> echo_request) {
@@ -70,13 +69,12 @@
 
 // SingletonServer uses the same object to handle all message pipes. Useful
 // for stateless operation.
-class SingletonServer : public mojo::ApplicationDelegate {
+class SingletonServer : public mojo::ApplicationImplBase {
  public:
   SingletonServer() {}
 
-  // From ApplicationDelegate
-  bool ConfigureIncomingConnection(
-      ServiceProviderImpl* service_provider_impl) override {
+  // From ApplicationImplBase
+  bool OnAcceptConnection(ServiceProviderImpl* service_provider_impl) override {
     service_provider_impl->AddService<Echo>(
         [this](const mojo::ConnectionContext& connection_context,
                mojo::InterfaceRequest<Echo> echo_request) {
@@ -99,13 +97,12 @@
 // not reliable. There's a race condition because a second client could bind
 // to the server before the first client called EchoString(). Therefore, this
 // is an example of how not to write your code.
-class OneAtATimeServer : public mojo::ApplicationDelegate {
+class OneAtATimeServer : public mojo::ApplicationImplBase {
  public:
   OneAtATimeServer() : binding_(&echo_impl_) {}
 
-  // From ApplicationDelegate
-  bool ConfigureIncomingConnection(
-      ServiceProviderImpl* service_provider_impl) override {
+  // From ApplicationImplBase
+  bool OnAcceptConnection(ServiceProviderImpl* service_provider_impl) override {
     service_provider_impl->AddService<Echo>(
         [this](const mojo::ConnectionContext& connection_context,
                mojo::InterfaceRequest<Echo> echo_request) {
@@ -125,10 +122,8 @@
 
 MojoResult MojoMain(MojoHandle application_request) {
   // Uncomment one of the three servers at a time to see it work:
-  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());
-
-  return runner.Run(application_request);
+  mojo::examples::MultiServer server_app;
+  // mojo::examples::SingletonServer server_app;
+  // mojo::examples::OneAtATimeServer server_app;
+  return mojo::RunMainApplication(application_request, &server_app);
 }
diff --git a/examples/indirect_service/indirect_integer_service.cc b/examples/indirect_service/indirect_integer_service.cc
index 6d9425c..f8dc3c9 100644
--- a/examples/indirect_service/indirect_integer_service.cc
+++ b/examples/indirect_service/indirect_integer_service.cc
@@ -2,12 +2,10 @@
 // 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_delegate.h"
-#include "mojo/public/cpp/application/application_runner.h"
+#include "mojo/public/cpp/application/application_impl_base.h"
+#include "mojo/public/cpp/application/run_application.h"
 #include "mojo/public/cpp/application/service_provider_impl.h"
 #include "mojo/public/cpp/bindings/binding.h"
 #include "mojo/public/cpp/bindings/strong_binding.h"
@@ -49,10 +47,9 @@
   StrongBinding<IndirectIntegerService> binding_;
 };
 
-class IndirectIntegerServiceAppDelegate : public ApplicationDelegate {
+class IndirectIntegerServiceApp : public ApplicationImplBase {
  public:
-  bool ConfigureIncomingConnection(
-      ServiceProviderImpl* service_provider_impl) override {
+  bool OnAcceptConnection(ServiceProviderImpl* service_provider_impl) override {
     service_provider_impl->AddService<IndirectIntegerService>(
         [](const ConnectionContext& connection_context,
            InterfaceRequest<IndirectIntegerService> request) {
@@ -66,8 +63,7 @@
 }  // namespace mojo
 
 MojoResult MojoMain(MojoHandle application_request) {
-  mojo::ApplicationRunner runner(
-      std::unique_ptr<mojo::examples::IndirectIntegerServiceAppDelegate>(
-          new mojo::examples::IndirectIntegerServiceAppDelegate()));
-  return runner.Run(application_request);
+  mojo::examples::IndirectIntegerServiceApp indirect_integer_service_app;
+  return mojo::RunMainApplication(application_request,
+                                  &indirect_integer_service_app);
 }
diff --git a/examples/indirect_service/integer_service.cc b/examples/indirect_service/integer_service.cc
index dac2703..0db7eaf 100644
--- a/examples/indirect_service/integer_service.cc
+++ b/examples/indirect_service/integer_service.cc
@@ -2,12 +2,10 @@
 // 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_delegate.h"
-#include "mojo/public/cpp/application/application_runner.h"
+#include "mojo/public/cpp/application/application_impl_base.h"
+#include "mojo/public/cpp/application/run_application.h"
 #include "mojo/public/cpp/application/service_provider_impl.h"
 #include "mojo/public/cpp/bindings/strong_binding.h"
 
@@ -29,10 +27,9 @@
   StrongBinding<IntegerService> binding_;
 };
 
-class IntegerServiceAppDelegate : public ApplicationDelegate {
+class IntegerServiceApp : public ApplicationImplBase {
  public:
-  bool ConfigureIncomingConnection(
-      ServiceProviderImpl* service_provider_impl) override {
+  bool OnAcceptConnection(ServiceProviderImpl* service_provider_impl) override {
     service_provider_impl->AddService<IntegerService>(
         [](const ConnectionContext& connection_context,
            InterfaceRequest<IntegerService> request) {
@@ -46,9 +43,7 @@
 }  // namespace mojo
 
 MojoResult MojoMain(MojoHandle application_request) {
-  mojo::ApplicationRunner runner(
-      std::unique_ptr<mojo::examples::IntegerServiceAppDelegate>(
-          new mojo::examples::IntegerServiceAppDelegate));
-  return runner.Run(application_request);
+  mojo::examples::IntegerServiceApp integer_service_app;
+  return mojo::RunMainApplication(application_request, &integer_service_app);
 }
 
diff --git a/services/device_info/device_info.cc b/services/device_info/device_info.cc
index 749f909..76d4def 100644
--- a/services/device_info/device_info.cc
+++ b/services/device_info/device_info.cc
@@ -2,13 +2,12 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include <cstdlib>
-#include <memory>
+#include <stdlib.h>
 
 #include "mojo/common/binding_set.h"
 #include "mojo/public/c/system/main.h"
-#include "mojo/public/cpp/application/application_delegate.h"
-#include "mojo/public/cpp/application/application_runner.h"
+#include "mojo/public/cpp/application/application_impl_base.h"
+#include "mojo/public/cpp/application/run_application.h"
 #include "mojo/public/cpp/application/service_provider_impl.h"
 #include "mojo/services/device_info/interfaces/device_info.mojom.h"
 
@@ -18,7 +17,7 @@
 
 // This is a native Mojo application which implements |DeviceInfo| interface for
 // Linux.
-class DeviceInfo : public ApplicationDelegate, public mojo::DeviceInfo {
+class DeviceInfoApp : public ApplicationImplBase, public mojo::DeviceInfo {
  public:
   // We look for the 'DISPLAY' environment variable. If present, then we assume
   // it to be a desktop, else we assume it to be a commandline
@@ -27,9 +26,8 @@
                                    : DeviceInfo::DeviceType::HEADLESS);
   }
 
-  // |ApplicationDelegate| override.
-  bool ConfigureIncomingConnection(
-      ServiceProviderImpl* service_provider_impl) override {
+  // |ApplicationImplBase| override.
+  bool OnAcceptConnection(ServiceProviderImpl* service_provider_impl) override {
     service_provider_impl->AddService<mojo::DeviceInfo>(
         [this](const ConnectionContext& connection_context,
                InterfaceRequest<mojo::DeviceInfo> device_info_request) {
@@ -47,8 +45,6 @@
 }  // namespace mojo
 
 MojoResult MojoMain(MojoHandle application_request) {
-  mojo::ApplicationRunner runner(
-      std::unique_ptr<mojo::services::device_info::DeviceInfo>(
-          new mojo::services::device_info::DeviceInfo()));
-  return runner.Run(application_request);
+  mojo::services::device_info::DeviceInfoApp device_info_app;
+  return mojo::RunMainApplication(application_request, &device_info_app);
 }
diff --git a/services/nacl/nonsfi/pnacl_compile.cc b/services/nacl/nonsfi/pnacl_compile.cc
index ab80697..d8bcf75 100644
--- a/services/nacl/nonsfi/pnacl_compile.cc
+++ b/services/nacl/nonsfi/pnacl_compile.cc
@@ -2,14 +2,12 @@
 // 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"
 #include "mojo/public/c/system/main.h"
-#include "mojo/public/cpp/application/application_delegate.h"
-#include "mojo/public/cpp/application/application_runner.h"
+#include "mojo/public/cpp/application/application_impl_base.h"
+#include "mojo/public/cpp/application/run_application.h"
 #include "mojo/public/cpp/application/service_provider_impl.h"
 #include "mojo/public/cpp/bindings/strong_binding.h"
 #include "services/nacl/nonsfi/kPnaclTranslatorCompile.h"
@@ -41,13 +39,12 @@
   StrongBinding<PexeCompilerInit> strong_binding_;
 };
 
-class MultiPexeCompiler : public ApplicationDelegate {
+class MultiPexeCompiler : public ApplicationImplBase {
  public:
   MultiPexeCompiler() {}
 
-  // From ApplicationDelegate
-  bool ConfigureIncomingConnection(
-      ServiceProviderImpl* service_provider_impl) override {
+  // From ApplicationImplBase
+  bool OnAcceptConnection(ServiceProviderImpl* service_provider_impl) override {
     service_provider_impl->AddService<PexeCompilerInit>(
         [](const ConnectionContext& connection_context,
            InterfaceRequest<PexeCompilerInit> request) {
@@ -61,7 +58,6 @@
 }  // namespace mojo
 
 MojoResult MojoMain(MojoHandle application_request) {
-  mojo::ApplicationRunner runner(std::unique_ptr<mojo::nacl::MultiPexeCompiler>(
-      new mojo::nacl::MultiPexeCompiler()));
-  return runner.Run(application_request);
+  mojo::nacl::MultiPexeCompiler multi_pexe_compiler;
+  return mojo::RunMainApplication(application_request, &multi_pexe_compiler);
 }
diff --git a/services/nacl/nonsfi/pnacl_link.cc b/services/nacl/nonsfi/pnacl_link.cc
index e4c741e..9a2ef24 100644
--- a/services/nacl/nonsfi/pnacl_link.cc
+++ b/services/nacl/nonsfi/pnacl_link.cc
@@ -2,14 +2,12 @@
 // 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"
 #include "mojo/public/c/system/main.h"
-#include "mojo/public/cpp/application/application_delegate.h"
-#include "mojo/public/cpp/application/application_runner.h"
+#include "mojo/public/cpp/application/application_impl_base.h"
+#include "mojo/public/cpp/application/run_application.h"
 #include "mojo/public/cpp/application/service_provider_impl.h"
 #include "mojo/public/cpp/bindings/strong_binding.h"
 #include "services/nacl/nonsfi/kLdNexe.h"
@@ -38,13 +36,12 @@
   StrongBinding<PexeLinkerInit> strong_binding_;
 };
 
-class MultiPexeLinker : public ApplicationDelegate {
+class MultiPexeLinker : public ApplicationImplBase {
  public:
   MultiPexeLinker() {}
 
-  // From ApplicationDelegate
-  bool ConfigureIncomingConnection(
-      ServiceProviderImpl* service_provider_impl) override {
+  // From ApplicationImplBase
+  bool OnAcceptConnection(ServiceProviderImpl* service_provider_impl) override {
     service_provider_impl->AddService<PexeLinkerInit>(
         [](const ConnectionContext& connection_context,
            InterfaceRequest<PexeLinkerInit> request) {
@@ -58,7 +55,6 @@
 }  // namespace mojo
 
 MojoResult MojoMain(MojoHandle application_request) {
-  mojo::ApplicationRunner runner(std::unique_ptr<mojo::nacl::MultiPexeLinker>(
-      new mojo::nacl::MultiPexeLinker()));
-  return runner.Run(application_request);
+  mojo::nacl::MultiPexeLinker multi_pexe_linker;
+  return mojo::RunMainApplication(application_request, &multi_pexe_linker);
 }
