diff --git a/apps/moterm/moterm_app.cc b/apps/moterm/moterm_app.cc
index ab8abfa..3eabe88 100644
--- a/apps/moterm/moterm_app.cc
+++ b/apps/moterm/moterm_app.cc
@@ -5,6 +5,7 @@
 #include "apps/moterm/moterm_app.h"
 
 #include "apps/moterm/moterm_view.h"
+#include "mojo/public/cpp/application/connect.h"
 
 MotermApp::MotermApp() {}
 
@@ -15,5 +16,6 @@
     mojo::InterfaceRequest<mojo::ui::ViewOwner> view_owner_request,
     mojo::InterfaceRequest<mojo::ServiceProvider> services,
     mojo::InterfaceHandle<mojo::ServiceProvider> exposed_services) {
-  new MotermView(app_impl(), view_owner_request.Pass(), services.Pass());
+  new MotermView(mojo::CreateApplicationConnector(app_impl()->shell()),
+                 view_owner_request.Pass(), services.Pass());
 }
diff --git a/apps/moterm/moterm_view.cc b/apps/moterm/moterm_view.cc
index e9f942f..43cb2fc 100644
--- a/apps/moterm/moterm_view.cc
+++ b/apps/moterm/moterm_view.cc
@@ -38,10 +38,10 @@
 constexpr uint32_t kRootNodeId = mojo::gfx::composition::kSceneRootNodeId;
 
 MotermView::MotermView(
-    mojo::ApplicationImpl* app_impl,
+    mojo::InterfaceHandle<mojo::ApplicationConnector> app_connector,
     mojo::InterfaceRequest<mojo::ui::ViewOwner> view_owner_request,
     mojo::InterfaceRequest<mojo::ServiceProvider> service_provider_request)
-    : GaneshView(app_impl, view_owner_request.Pass(), "Moterm"),
+    : GaneshView(app_connector.Pass(), view_owner_request.Pass(), "Moterm"),
       choreographer_(scene(), this),
       input_handler_(GetViewServiceProvider(), this),
       model_(MotermModel::Size(240, 160), MotermModel::Size(24, 80), this),
diff --git a/apps/moterm/moterm_view.h b/apps/moterm/moterm_view.h
index 3595c4e..a98f29d 100644
--- a/apps/moterm/moterm_view.h
+++ b/apps/moterm/moterm_view.h
@@ -32,7 +32,7 @@
                    public mojo::terminal::Terminal {
  public:
   MotermView(
-      mojo::ApplicationImpl* app_impl,
+      mojo::InterfaceHandle<mojo::ApplicationConnector> app_connector,
       mojo::InterfaceRequest<mojo::ui::ViewOwner> view_owner_request,
       mojo::InterfaceRequest<mojo::ServiceProvider> service_provider_request);
   ~MotermView() override;
diff --git a/examples/shadows/shadows_app.cc b/examples/shadows/shadows_app.cc
index fd6279a..207476b 100644
--- a/examples/shadows/shadows_app.cc
+++ b/examples/shadows/shadows_app.cc
@@ -5,6 +5,7 @@
 #include "examples/shadows/shadows_app.h"
 
 #include "examples/shadows/shadows_view.h"
+#include "mojo/public/cpp/application/connect.h"
 
 namespace examples {
 
@@ -17,7 +18,8 @@
     mojo::InterfaceRequest<mojo::ui::ViewOwner> view_owner_request,
     mojo::InterfaceRequest<mojo::ServiceProvider> services,
     mojo::InterfaceHandle<mojo::ServiceProvider> exposed_services) {
-  new ShadowsView(app_impl(), view_owner_request.Pass());
+  new ShadowsView(mojo::CreateApplicationConnector(app_impl()->shell()),
+                  view_owner_request.Pass());
 }
 
 }  // namespace examples
diff --git a/examples/shadows/shadows_view.cc b/examples/shadows/shadows_view.cc
index 86a3f75..a3d5a1a 100644
--- a/examples/shadows/shadows_view.cc
+++ b/examples/shadows/shadows_view.cc
@@ -19,9 +19,9 @@
 }  // namespace
 
 ShadowsView::ShadowsView(
-    mojo::ApplicationImpl* app_impl,
+    mojo::InterfaceHandle<mojo::ApplicationConnector> app_connector,
     mojo::InterfaceRequest<mojo::ui::ViewOwner> view_owner_request)
-    : GLView(app_impl, view_owner_request.Pass(), "Shadows"),
+    : GLView(app_connector.Pass(), view_owner_request.Pass(), "Shadows"),
       choreographer_(scene(), this) {
   mojo::GLContext::Scope gl_scope(gl_context());
   renderer_.reset(new ShadowsRenderer());
diff --git a/examples/shadows/shadows_view.h b/examples/shadows/shadows_view.h
index 893dfad..e5e49a0 100644
--- a/examples/shadows/shadows_view.h
+++ b/examples/shadows/shadows_view.h
@@ -16,7 +16,7 @@
 class ShadowsView : public mojo::ui::GLView,
                     public mojo::ui::ChoreographerDelegate {
  public:
-  ShadowsView(mojo::ApplicationImpl* app_impl,
+  ShadowsView(mojo::InterfaceHandle<mojo::ApplicationConnector> app_connector,
               mojo::InterfaceRequest<mojo::ui::ViewOwner> view_owner_request);
 
   ~ShadowsView() override;
diff --git a/examples/ui/jank/jank.cc b/examples/ui/jank/jank.cc
index c3efb63..aedb12e 100644
--- a/examples/ui/jank/jank.cc
+++ b/examples/ui/jank/jank.cc
@@ -10,6 +10,7 @@
 #include "base/macros.h"
 #include "mojo/application/application_runner_chromium.h"
 #include "mojo/public/c/system/main.h"
+#include "mojo/public/cpp/application/connect.h"
 #include "mojo/ui/choreographer.h"
 #include "mojo/ui/ganesh_view.h"
 #include "mojo/ui/input_handler.h"
@@ -53,9 +54,9 @@
                  public mojo::ui::ChoreographerDelegate,
                  public mojo::ui::InputListener {
  public:
-  JankView(mojo::ApplicationImpl* app_impl,
+  JankView(mojo::InterfaceHandle<mojo::ApplicationConnector> app_connector,
            mojo::InterfaceRequest<mojo::ui::ViewOwner> view_owner_request)
-      : GaneshView(app_impl, view_owner_request.Pass(), "Jank"),
+      : GaneshView(app_connector.Pass(), view_owner_request.Pass(), "Jank"),
         choreographer_(scene(), this),
         input_handler_(GetViewServiceProvider(), this),
         typeface_(skia::AdoptRef(SkTypeface::CreateFromStream(
@@ -210,7 +211,8 @@
       mojo::InterfaceRequest<mojo::ui::ViewOwner> view_owner_request,
       mojo::InterfaceRequest<mojo::ServiceProvider> services,
       mojo::InterfaceHandle<mojo::ServiceProvider> exposed_services) override {
-    new JankView(app_impl(), view_owner_request.Pass());
+    new JankView(mojo::CreateApplicationConnector(app_impl()->shell()),
+                 view_owner_request.Pass());
   }
 
  private:
diff --git a/examples/ui/noodles/noodles_app.cc b/examples/ui/noodles/noodles_app.cc
index c790822..1b4034a 100644
--- a/examples/ui/noodles/noodles_app.cc
+++ b/examples/ui/noodles/noodles_app.cc
@@ -5,6 +5,7 @@
 #include "examples/ui/noodles/noodles_app.h"
 
 #include "examples/ui/noodles/noodles_view.h"
+#include "mojo/public/cpp/application/connect.h"
 
 namespace examples {
 
@@ -17,7 +18,8 @@
     mojo::InterfaceRequest<mojo::ui::ViewOwner> view_owner_request,
     mojo::InterfaceRequest<mojo::ServiceProvider> services,
     mojo::InterfaceHandle<mojo::ServiceProvider> exposed_services) {
-  new NoodlesView(app_impl(), view_owner_request.Pass());
+  new NoodlesView(mojo::CreateApplicationConnector(app_impl()->shell()),
+                  view_owner_request.Pass());
 }
 
 }  // namespace examples
diff --git a/examples/ui/noodles/noodles_view.cc b/examples/ui/noodles/noodles_view.cc
index 6c790a6..eec3045 100644
--- a/examples/ui/noodles/noodles_view.cc
+++ b/examples/ui/noodles/noodles_view.cc
@@ -50,9 +50,9 @@
 }  // namespace
 
 NoodlesView::NoodlesView(
-    mojo::ApplicationImpl* app_impl,
+    mojo::InterfaceHandle<mojo::ApplicationConnector> app_connector,
     mojo::InterfaceRequest<mojo::ui::ViewOwner> view_owner_request)
-    : BaseView(app_impl, view_owner_request.Pass(), "Noodles"),
+    : BaseView(app_connector.Pass(), view_owner_request.Pass(), "Noodles"),
       choreographer_(scene(), this),
       frame_queue_(std::make_shared<FrameQueue>()),
       rasterizer_delegate_(
@@ -65,12 +65,11 @@
   rasterizer_task_runner_ = rasterizer_thread_->message_loop()->task_runner();
 
   rasterizer_task_runner_->PostTask(
-      FROM_HERE,
-      base::Bind(
-          &RasterizerDelegate::CreateRasterizer,
-          base::Unretained(rasterizer_delegate_.get()),
-          base::Passed(mojo::CreateApplicationConnector(app_impl->shell())),
-          base::Passed(TakeScene().PassInterfaceHandle())));
+      FROM_HERE, base::Bind(&RasterizerDelegate::CreateRasterizer,
+                            base::Unretained(rasterizer_delegate_.get()),
+                            base::Passed(mojo::DuplicateApplicationConnector(
+                                BaseView::app_connector())),
+                            base::Passed(TakeScene().PassInterfaceHandle())));
 }
 
 NoodlesView::~NoodlesView() {
diff --git a/examples/ui/noodles/noodles_view.h b/examples/ui/noodles/noodles_view.h
index 8c3470c..c7d1a25 100644
--- a/examples/ui/noodles/noodles_view.h
+++ b/examples/ui/noodles/noodles_view.h
@@ -27,7 +27,7 @@
 class NoodlesView : public mojo::ui::BaseView,
                     public mojo::ui::ChoreographerDelegate {
  public:
-  NoodlesView(mojo::ApplicationImpl* app_impl,
+  NoodlesView(mojo::InterfaceHandle<mojo::ApplicationConnector> app_connector,
               mojo::InterfaceRequest<mojo::ui::ViewOwner> view_owner_request);
 
   ~NoodlesView() override;
diff --git a/examples/ui/pdf_viewer/pdf_viewer.cc b/examples/ui/pdf_viewer/pdf_viewer.cc
index 8fd3441..2209ba8 100644
--- a/examples/ui/pdf_viewer/pdf_viewer.cc
+++ b/examples/ui/pdf_viewer/pdf_viewer.cc
@@ -11,6 +11,7 @@
 #include "mojo/application/application_runner_chromium.h"
 #include "mojo/data_pipe_utils/data_pipe_utils.h"
 #include "mojo/public/c/system/main.h"
+#include "mojo/public/cpp/application/connect.h"
 #include "mojo/ui/choreographer.h"
 #include "mojo/ui/content_viewer_app.h"
 #include "mojo/ui/ganesh_view.h"
@@ -116,10 +117,12 @@
                         public mojo::ui::InputListener {
  public:
   PDFDocumentView(
-      mojo::ApplicationImpl* app_impl,
+      mojo::InterfaceHandle<mojo::ApplicationConnector> app_connector,
       mojo::InterfaceRequest<mojo::ui::ViewOwner> view_owner_request,
       const std::shared_ptr<PDFDocument>& pdf_document)
-      : GaneshView(app_impl, view_owner_request.Pass(), "PDFDocumentViewer"),
+      : GaneshView(app_connector.Pass(),
+                   view_owner_request.Pass(),
+                   "PDFDocumentViewer"),
         pdf_document_(pdf_document),
         choreographer_(scene(), this),
         input_handler_(GetViewServiceProvider(), this) {
@@ -271,7 +274,8 @@
       mojo::InterfaceRequest<mojo::ui::ViewOwner> view_owner_request,
       mojo::InterfaceRequest<mojo::ServiceProvider> services,
       mojo::InterfaceHandle<mojo::ServiceProvider> exposed_services) override {
-    new PDFDocumentView(app_impl(), view_owner_request.Pass(), pdf_document_);
+    new PDFDocumentView(mojo::CreateApplicationConnector(app_impl()->shell()),
+                        view_owner_request.Pass(), pdf_document_);
   }
 
  private:
diff --git a/examples/ui/png_viewer/png_viewer.cc b/examples/ui/png_viewer/png_viewer.cc
index fc7589d..bec7677 100644
--- a/examples/ui/png_viewer/png_viewer.cc
+++ b/examples/ui/png_viewer/png_viewer.cc
@@ -10,6 +10,7 @@
 #include "mojo/application/application_runner_chromium.h"
 #include "mojo/data_pipe_utils/data_pipe_utils.h"
 #include "mojo/public/c/system/main.h"
+#include "mojo/public/cpp/application/connect.h"
 #include "mojo/ui/content_viewer_app.h"
 #include "mojo/ui/ganesh_view.h"
 #include "third_party/skia/include/core/SkBitmap.h"
@@ -27,10 +28,12 @@
 
 class PNGView : public mojo::ui::GaneshView {
  public:
-  PNGView(mojo::ApplicationImpl* app_impl,
+  PNGView(mojo::InterfaceHandle<mojo::ApplicationConnector> app_connector,
           mojo::InterfaceRequest<mojo::ui::ViewOwner> view_owner_request,
           const skia::RefPtr<SkImage>& image)
-      : GaneshView(app_impl, view_owner_request.Pass(), "PNGViewer"),
+      : GaneshView(app_connector.Pass(),
+                   view_owner_request.Pass(),
+                   "PNGViewer"),
         image_(image) {
     DCHECK(image_);
   }
@@ -119,7 +122,8 @@
       mojo::InterfaceRequest<mojo::ui::ViewOwner> view_owner_request,
       mojo::InterfaceRequest<mojo::ServiceProvider> services,
       mojo::InterfaceHandle<mojo::ServiceProvider> exposed_services) override {
-    new PNGView(app_impl(), view_owner_request.Pass(), image_);
+    new PNGView(mojo::CreateApplicationConnector(app_impl()->shell()),
+                view_owner_request.Pass(), image_);
   }
 
  private:
diff --git a/examples/ui/shapes/shapes_app.cc b/examples/ui/shapes/shapes_app.cc
index 84643a0..5d0f0c1 100644
--- a/examples/ui/shapes/shapes_app.cc
+++ b/examples/ui/shapes/shapes_app.cc
@@ -5,6 +5,7 @@
 #include "examples/ui/shapes/shapes_app.h"
 
 #include "examples/ui/shapes/shapes_view.h"
+#include "mojo/public/cpp/application/connect.h"
 
 namespace examples {
 
@@ -17,7 +18,8 @@
     mojo::InterfaceRequest<mojo::ui::ViewOwner> view_owner_request,
     mojo::InterfaceRequest<mojo::ServiceProvider> services,
     mojo::InterfaceHandle<mojo::ServiceProvider> exposed_services) {
-  new ShapesView(app_impl(), view_owner_request.Pass());
+  new ShapesView(mojo::CreateApplicationConnector(app_impl()->shell()),
+                 view_owner_request.Pass());
 }
 
 }  // namespace examples
diff --git a/examples/ui/shapes/shapes_view.cc b/examples/ui/shapes/shapes_view.cc
index 07611aa..721c2a0 100644
--- a/examples/ui/shapes/shapes_view.cc
+++ b/examples/ui/shapes/shapes_view.cc
@@ -18,9 +18,9 @@
 }  // namespace
 
 ShapesView::ShapesView(
-    mojo::ApplicationImpl* app_impl,
+    mojo::InterfaceHandle<mojo::ApplicationConnector> app_connector,
     mojo::InterfaceRequest<mojo::ui::ViewOwner> view_owner_request)
-    : GaneshView(app_impl, view_owner_request.Pass(), "Shapes") {}
+    : GaneshView(app_connector.Pass(), view_owner_request.Pass(), "Shapes") {}
 
 ShapesView::~ShapesView() {}
 
diff --git a/examples/ui/shapes/shapes_view.h b/examples/ui/shapes/shapes_view.h
index bce122f..a4ad165 100644
--- a/examples/ui/shapes/shapes_view.h
+++ b/examples/ui/shapes/shapes_view.h
@@ -13,7 +13,7 @@
 
 class ShapesView : public mojo::ui::GaneshView {
  public:
-  ShapesView(mojo::ApplicationImpl* app_impl,
+  ShapesView(mojo::InterfaceHandle<mojo::ApplicationConnector> app_connector,
              mojo::InterfaceRequest<mojo::ui::ViewOwner> view_owner_request);
 
   ~ShapesView() override;
diff --git a/examples/ui/spinning_cube/spinning_cube_app.cc b/examples/ui/spinning_cube/spinning_cube_app.cc
index 2fbe9d4..6159641 100644
--- a/examples/ui/spinning_cube/spinning_cube_app.cc
+++ b/examples/ui/spinning_cube/spinning_cube_app.cc
@@ -5,6 +5,7 @@
 #include "examples/ui/spinning_cube/spinning_cube_app.h"
 
 #include "examples/ui/spinning_cube/spinning_cube_view.h"
+#include "mojo/public/cpp/application/connect.h"
 
 namespace examples {
 
@@ -17,7 +18,8 @@
     mojo::InterfaceRequest<mojo::ui::ViewOwner> view_owner_request,
     mojo::InterfaceRequest<mojo::ServiceProvider> services,
     mojo::InterfaceHandle<mojo::ServiceProvider> exposed_services) {
-  new SpinningCubeView(app_impl(), view_owner_request.Pass());
+  new SpinningCubeView(mojo::CreateApplicationConnector(app_impl()->shell()),
+                       view_owner_request.Pass());
 }
 
 }  // namespace examples
diff --git a/examples/ui/spinning_cube/spinning_cube_view.cc b/examples/ui/spinning_cube/spinning_cube_view.cc
index fab02ec..9386b88 100644
--- a/examples/ui/spinning_cube/spinning_cube_view.cc
+++ b/examples/ui/spinning_cube/spinning_cube_view.cc
@@ -54,9 +54,9 @@
 }  // namespace
 
 SpinningCubeView::SpinningCubeView(
-    mojo::ApplicationImpl* app_impl,
+    mojo::InterfaceHandle<mojo::ApplicationConnector> app_connector,
     mojo::InterfaceRequest<mojo::ui::ViewOwner> view_owner_request)
-    : GLView(app_impl, view_owner_request.Pass(), "SpinningCube"),
+    : GLView(app_connector.Pass(), view_owner_request.Pass(), "SpinningCube"),
       choreographer_(scene(), this),
       input_handler_(GetViewServiceProvider(), this),
       weak_ptr_factory_(this) {
diff --git a/examples/ui/spinning_cube/spinning_cube_view.h b/examples/ui/spinning_cube/spinning_cube_view.h
index 5de87e5..35b0f24 100644
--- a/examples/ui/spinning_cube/spinning_cube_view.h
+++ b/examples/ui/spinning_cube/spinning_cube_view.h
@@ -19,7 +19,7 @@
                          public mojo::ui::InputListener {
  public:
   SpinningCubeView(
-      mojo::ApplicationImpl* app_impl,
+      mojo::InterfaceHandle<mojo::ApplicationConnector> app_connector,
       mojo::InterfaceRequest<mojo::ui::ViewOwner> view_owner_request);
 
   ~SpinningCubeView() override;
diff --git a/examples/ui/tile/tile_app.cc b/examples/ui/tile/tile_app.cc
index 31a721e..2b39309 100644
--- a/examples/ui/tile/tile_app.cc
+++ b/examples/ui/tile/tile_app.cc
@@ -5,6 +5,7 @@
 #include "base/strings/string_split.h"
 #include "examples/ui/tile/tile_app.h"
 #include "examples/ui/tile/tile_view.h"
+#include "mojo/public/cpp/application/connect.h"
 #include "url/url_parse.h"
 
 namespace examples {
@@ -24,7 +25,8 @@
     return;
   }
 
-  new TileView(app_impl(), view_owner_request.Pass(), params);
+  new TileView(mojo::CreateApplicationConnector(app_impl()->shell()),
+               view_owner_request.Pass(), params);
 }
 
 bool TileApp::ParseParams(const std::string& connection_url,
diff --git a/examples/ui/tile/tile_view.cc b/examples/ui/tile/tile_view.cc
index 4a69986..b09815e 100644
--- a/examples/ui/tile/tile_view.cc
+++ b/examples/ui/tile/tile_view.cc
@@ -27,10 +27,11 @@
 TileParams::~TileParams() {}
 
 TileView::TileView(
-    mojo::ApplicationImpl* app_impl,
+    mojo::InterfaceHandle<mojo::ApplicationConnector> app_connector,
     mojo::InterfaceRequest<mojo::ui::ViewOwner> view_owner_request,
     const TileParams& params)
-    : BaseView(app_impl, view_owner_request.Pass(), "Tile"), params_(params) {
+    : BaseView(app_connector.Pass(), view_owner_request.Pass(), "Tile"),
+      params_(params) {
   ConnectViews();
 }
 
@@ -41,7 +42,7 @@
   for (const auto& url : params_.view_urls) {
     // Start connecting to the view provider.
     mojo::ui::ViewProviderPtr provider;
-    mojo::ConnectToService(app_impl()->shell(), url, mojo::GetProxy(&provider));
+    mojo::ConnectToService(app_connector(), url, mojo::GetProxy(&provider));
 
     LOG(INFO) << "Connecting to view: child_key=" << child_key
               << ", url=" << url;
diff --git a/examples/ui/tile/tile_view.h b/examples/ui/tile/tile_view.h
index 3ea7bbd..6ee3193 100644
--- a/examples/ui/tile/tile_view.h
+++ b/examples/ui/tile/tile_view.h
@@ -42,7 +42,7 @@
 
 class TileView : public mojo::ui::BaseView {
  public:
-  TileView(mojo::ApplicationImpl* app_impl_,
+  TileView(mojo::InterfaceHandle<mojo::ApplicationConnector> app_connector,
            mojo::InterfaceRequest<mojo::ui::ViewOwner> view_owner_request,
            const TileParams& tile_params);
 
diff --git a/mojo/public/cpp/application/connect.h b/mojo/public/cpp/application/connect.h
index 946ca7d..3b3fd9c 100644
--- a/mojo/public/cpp/application/connect.h
+++ b/mojo/public/cpp/application/connect.h
@@ -63,6 +63,12 @@
 // passed to any thread) from the shell.
 InterfaceHandle<ApplicationConnector> CreateApplicationConnector(Shell* shell);
 
+// Helper for "duplicating" a |ApplicationConnector| (typically, from an
+// |ApplicationConnectorPtr|, getting another independent
+// |InterfaceHandle<ApplicationConnector>|).
+InterfaceHandle<ApplicationConnector> DuplicateApplicationConnector(
+    ApplicationConnector* application_connector);
+
 }  // namespace mojo
 
 #endif  // MOJO_PUBLIC_CPP_APPLICATION_CONNECT_H_
diff --git a/mojo/public/cpp/application/lib/connect.cc b/mojo/public/cpp/application/lib/connect.cc
index 33130da..f6957c3 100644
--- a/mojo/public/cpp/application/lib/connect.cc
+++ b/mojo/public/cpp/application/lib/connect.cc
@@ -14,4 +14,11 @@
   return application_connector;
 }
 
+InterfaceHandle<ApplicationConnector> DuplicateApplicationConnector(
+    ApplicationConnector* application_connector) {
+  InterfaceHandle<ApplicationConnector> new_application_connector;
+  application_connector->Duplicate(GetProxy(&new_application_connector));
+  return new_application_connector;
+}
+
 }  // namespace mojo
diff --git a/mojo/ui/base_view.cc b/mojo/ui/base_view.cc
index 68611d7..124425f 100644
--- a/mojo/ui/base_view.cc
+++ b/mojo/ui/base_view.cc
@@ -10,55 +10,52 @@
 namespace mojo {
 namespace ui {
 
-BaseView::BaseView(
-    mojo::ApplicationImpl* app_impl,
-    mojo::InterfaceRequest<mojo::ui::ViewOwner> view_owner_request,
-    const std::string& label)
-    : app_impl_(app_impl),
+BaseView::BaseView(InterfaceHandle<ApplicationConnector> app_connector,
+                   InterfaceRequest<ViewOwner> view_owner_request,
+                   const std::string& label)
+    : app_connector_(ApplicationConnectorPtr::Create(app_connector.Pass())),
       view_listener_binding_(this),
       view_container_listener_binding_(this) {
-  DCHECK(app_impl_);
-  ConnectToService(app_impl_->shell(), "mojo:view_manager_service",
-                   mojo::GetProxy(&view_manager_));
+  DCHECK(app_connector_);
+  ConnectToService(app_connector_.get(), "mojo:view_manager_service",
+                   GetProxy(&view_manager_));
 
-  mojo::ui::ViewListenerPtr view_listener;
-  view_listener_binding_.Bind(mojo::GetProxy(&view_listener));
-  view_manager_->CreateView(mojo::GetProxy(&view_), view_owner_request.Pass(),
+  ViewListenerPtr view_listener;
+  view_listener_binding_.Bind(GetProxy(&view_listener));
+  view_manager_->CreateView(GetProxy(&view_), view_owner_request.Pass(),
                             view_listener.Pass(), label);
-  view_->CreateScene(mojo::GetProxy(&scene_));
+  view_->CreateScene(GetProxy(&scene_));
 }
 
 BaseView::~BaseView() {}
 
-mojo::ServiceProvider* BaseView::GetViewServiceProvider() {
+ServiceProvider* BaseView::GetViewServiceProvider() {
   if (!view_service_provider_)
-    view_->GetServiceProvider(mojo::GetProxy(&view_service_provider_));
+    view_->GetServiceProvider(GetProxy(&view_service_provider_));
   return view_service_provider_.get();
 }
 
-mojo::ui::ViewContainer* BaseView::GetViewContainer() {
+ViewContainer* BaseView::GetViewContainer() {
   if (!view_container_) {
-    view_->GetContainer(mojo::GetProxy(&view_container_));
-    mojo::ui::ViewContainerListenerPtr view_container_listener;
-    view_container_listener_binding_.Bind(
-        mojo::GetProxy(&view_container_listener));
+    view_->GetContainer(GetProxy(&view_container_));
+    ViewContainerListenerPtr view_container_listener;
+    view_container_listener_binding_.Bind(GetProxy(&view_container_listener));
     view_container_->SetListener(view_container_listener.Pass());
   }
   return view_container_.get();
 }
 
 void BaseView::OnPropertiesChanged(uint32_t old_scene_version,
-                                   mojo::ui::ViewPropertiesPtr old_properties) {
-}
+                                   ViewPropertiesPtr old_properties) {}
 
 void BaseView::OnChildAttached(uint32_t child_key,
-                               mojo::ui::ViewInfoPtr child_view_info) {}
+                               ViewInfoPtr child_view_info) {}
 
 void BaseView::OnChildUnavailable(uint32_t child_key) {}
 
 void BaseView::OnPropertiesChanged(
     uint32_t scene_version,
-    mojo::ui::ViewPropertiesPtr properties,
+    ViewPropertiesPtr properties,
     const OnPropertiesChangedCallback& callback) {
   DCHECK(properties);
   DCHECK(properties->display_metrics);
@@ -66,7 +63,7 @@
   DCHECK(properties->view_layout->size);
 
   uint32_t old_scene_version = scene_version_;
-  mojo::ui::ViewPropertiesPtr old_properties = properties_.Pass();
+  ViewPropertiesPtr old_properties = properties_.Pass();
   scene_version_ = scene_version;
   properties_ = properties.Pass();
 
@@ -75,7 +72,7 @@
 }
 
 void BaseView::OnChildAttached(uint32_t child_key,
-                               mojo::ui::ViewInfoPtr child_view_info,
+                               ViewInfoPtr child_view_info,
                                const OnChildUnavailableCallback& callback) {
   DCHECK(child_view_info);
 
diff --git a/mojo/ui/base_view.h b/mojo/ui/base_view.h
index e5fe71c..a8f2b69 100644
--- a/mojo/ui/base_view.h
+++ b/mojo/ui/base_view.h
@@ -7,10 +7,11 @@
 
 #include <string>
 
-#include "mojo/public/cpp/application/application_impl.h"
 #include "mojo/public/cpp/bindings/binding.h"
+#include "mojo/public/cpp/bindings/interface_handle.h"
 #include "mojo/public/cpp/bindings/strong_binding.h"
 #include "mojo/public/cpp/system/macros.h"
+#include "mojo/public/interfaces/application/application_connector.mojom.h"
 #include "mojo/public/interfaces/application/service_provider.mojom.h"
 #include "mojo/services/gfx/composition/interfaces/scenes.mojom.h"
 #include "mojo/services/ui/views/interfaces/view_manager.mojom.h"
@@ -25,55 +26,51 @@
 //
 // It is not necessary to use this class to implement all Views.
 // This class is merely intended to make the simple apps easier to write.
-class BaseView : public mojo::ui::ViewListener,
-                 public mojo::ui::ViewContainerListener {
+class BaseView : public ViewListener, public ViewContainerListener {
  public:
-  // TODO(jeffbrown): Consider switching this over to an ApplicationConnector
-  // but having ApplicationImpl is handy for simple examples.
-  BaseView(mojo::ApplicationImpl* app_impl,
-           mojo::InterfaceRequest<mojo::ui::ViewOwner> view_owner_request,
+  BaseView(InterfaceHandle<ApplicationConnector> app_connector,
+           InterfaceRequest<ViewOwner> view_owner_request,
            const std::string& label);
 
   ~BaseView() override;
 
   // Gets the application implementation object provided at creation time.
-  mojo::ApplicationImpl* app_impl() { return app_impl_; }
+  ApplicationConnector* app_connector() { return app_connector_.get(); }
 
   // Gets the view manager.
-  mojo::ui::ViewManager* view_manager() { return view_manager_.get(); }
+  ViewManager* view_manager() { return view_manager_.get(); }
 
   // Gets the underlying view interface.
-  mojo::ui::View* view() { return view_.get(); }
+  View* view() { return view_.get(); }
 
   // Gets the service provider for the view.
-  mojo::ServiceProvider* GetViewServiceProvider();
+  ServiceProvider* GetViewServiceProvider();
 
   // Gets the underlying view container interface.
-  mojo::ui::ViewContainer* GetViewContainer();
+  ViewContainer* GetViewContainer();
 
   // Gets the scene for the view.
   // Returns nullptr if the |TakeScene| was called.
-  mojo::gfx::composition::Scene* scene() { return scene_.get(); }
+  gfx::composition::Scene* scene() { return scene_.get(); }
 
   // Takes the scene from the view.
   // This is useful if the scene will be rendered by a separate component.
-  mojo::gfx::composition::ScenePtr TakeScene() { return scene_.Pass(); }
+  gfx::composition::ScenePtr TakeScene() { return scene_.Pass(); }
 
   // Gets the currently requested scene version.
   uint32_t scene_version() { return scene_version_; }
 
   // Gets the current view properties.
   // Returns nullptr if none.
-  mojo::ui::ViewProperties* properties() { return properties_.get(); }
+  ViewProperties* properties() { return properties_.get(); }
 
   // Called when properties changed.
   // Use |scene_version()| and |properties()| to get the current values.
   virtual void OnPropertiesChanged(uint32_t old_scene_version,
-                                   mojo::ui::ViewPropertiesPtr old_properties);
+                                   ViewPropertiesPtr old_properties);
 
   // Called when a child is attached.
-  virtual void OnChildAttached(uint32_t child_key,
-                               mojo::ui::ViewInfoPtr child_view_info);
+  virtual void OnChildAttached(uint32_t child_key, ViewInfoPtr child_view_info);
 
   // Called when a child becomes unavailable.
   virtual void OnChildUnavailable(uint32_t child_key);
@@ -82,28 +79,27 @@
   // |ViewListener|:
   void OnPropertiesChanged(
       uint32_t scene_version,
-      mojo::ui::ViewPropertiesPtr properties,
+      ViewPropertiesPtr properties,
       const OnPropertiesChangedCallback& callback) override;
 
   // |ViewContainerListener|:
   void OnChildAttached(uint32_t child_key,
-                       mojo::ui::ViewInfoPtr child_view_info,
+                       ViewInfoPtr child_view_info,
                        const OnChildAttachedCallback& callback) override;
   void OnChildUnavailable(uint32_t child_key,
                           const OnChildUnavailableCallback& callback) override;
 
-  mojo::ApplicationImpl* app_impl_;
+  ApplicationConnectorPtr app_connector_;
 
-  mojo::StrongBinding<mojo::ui::ViewListener> view_listener_binding_;
-  mojo::Binding<mojo::ui::ViewContainerListener>
-      view_container_listener_binding_;
-  mojo::ui::ViewManagerPtr view_manager_;
-  mojo::ui::ViewPtr view_;
-  mojo::ServiceProviderPtr view_service_provider_;
-  mojo::ui::ViewContainerPtr view_container_;
-  mojo::gfx::composition::ScenePtr scene_;
-  uint32_t scene_version_ = mojo::gfx::composition::kSceneVersionNone;
-  mojo::ui::ViewPropertiesPtr properties_;
+  StrongBinding<ViewListener> view_listener_binding_;
+  Binding<ViewContainerListener> view_container_listener_binding_;
+  ViewManagerPtr view_manager_;
+  ViewPtr view_;
+  ServiceProviderPtr view_service_provider_;
+  ViewContainerPtr view_container_;
+  gfx::composition::ScenePtr scene_;
+  uint32_t scene_version_ = gfx::composition::kSceneVersionNone;
+  ViewPropertiesPtr properties_;
 
   MOJO_DISALLOW_COPY_AND_ASSIGN(BaseView);
 };
diff --git a/mojo/ui/ganesh_view.cc b/mojo/ui/ganesh_view.cc
index 95b1170..857840d 100644
--- a/mojo/ui/ganesh_view.cc
+++ b/mojo/ui/ganesh_view.cc
@@ -5,23 +5,18 @@
 #include "mojo/ui/ganesh_view.h"
 
 #include "base/logging.h"
-#include "mojo/public/cpp/application/connect.h"
 #include "mojo/skia/ganesh_texture_surface.h"
 #include "third_party/skia/include/core/SkCanvas.h"
 
 namespace mojo {
 namespace ui {
 
-GaneshView::GaneshView(
-    mojo::ApplicationImpl* app_impl,
-    mojo::InterfaceRequest<mojo::ui::ViewOwner> view_owner_request,
-    const std::string& label)
-    : BaseView(app_impl, view_owner_request.Pass(), label),
-      ganesh_renderer_(
-          new mojo::skia::GaneshContext(mojo::GLContext::CreateOffscreen(
-              mojo::ApplicationConnectorPtr::Create(
-                  mojo::CreateApplicationConnector(app_impl->shell()))
-                  .get()))) {}
+GaneshView::GaneshView(InterfaceHandle<ApplicationConnector> app_connector,
+                       InterfaceRequest<ViewOwner> view_owner_request,
+                       const std::string& label)
+    : BaseView(app_connector.Pass(), view_owner_request.Pass(), label),
+      ganesh_renderer_(new skia::GaneshContext(
+          GLContext::CreateOffscreen(BaseView::app_connector()))) {}
 
 GaneshView::~GaneshView() {}
 
diff --git a/mojo/ui/ganesh_view.h b/mojo/ui/ganesh_view.h
index 95c6c36..f42551c 100644
--- a/mojo/ui/ganesh_view.h
+++ b/mojo/ui/ganesh_view.h
@@ -6,6 +6,7 @@
 #define MOJO_UI_GANESH_VIEW_H_
 
 #include "mojo/gpu/gl_context.h"
+#include "mojo/public/cpp/bindings/interface_handle.h"
 #include "mojo/skia/ganesh_context.h"
 #include "mojo/ui/base_view.h"
 #include "mojo/ui/ganesh_renderer.h"
@@ -20,27 +21,27 @@
 // content for the scene.
 class GaneshView : public BaseView {
  public:
-  GaneshView(mojo::ApplicationImpl* app_impl,
-             mojo::InterfaceRequest<mojo::ui::ViewOwner> view_owner_request,
+  GaneshView(InterfaceHandle<ApplicationConnector> app_connector,
+             InterfaceRequest<ViewOwner> view_owner_request,
              const std::string& label);
 
   ~GaneshView() override;
 
   // Gets the GL context, never null.
-  const scoped_refptr<mojo::GLContext>& gl_context() const {
+  const scoped_refptr<GLContext>& gl_context() const {
     return ganesh_renderer_.gl_context();
   }
 
   // Gets the Ganesh context, never null.
-  const scoped_refptr<mojo::skia::GaneshContext>& ganesh_context() const {
+  const scoped_refptr<skia::GaneshContext>& ganesh_context() const {
     return ganesh_renderer_.ganesh_context();
   }
 
   // Gets the Ganesh renderer, never null.
-  mojo::ui::GaneshRenderer* ganesh_renderer() { return &ganesh_renderer_; }
+  GaneshRenderer* ganesh_renderer() { return &ganesh_renderer_; }
 
  private:
-  mojo::ui::GaneshRenderer ganesh_renderer_;
+  GaneshRenderer ganesh_renderer_;
 
   DISALLOW_COPY_AND_ASSIGN(GaneshView);
 };
diff --git a/mojo/ui/gl_view.cc b/mojo/ui/gl_view.cc
index e3c80f5..79b2c94 100644
--- a/mojo/ui/gl_view.cc
+++ b/mojo/ui/gl_view.cc
@@ -5,19 +5,15 @@
 #include "mojo/ui/gl_view.h"
 
 #include "base/logging.h"
-#include "mojo/public/cpp/application/connect.h"
 
 namespace mojo {
 namespace ui {
 
-GLView::GLView(mojo::ApplicationImpl* app_impl,
-               mojo::InterfaceRequest<mojo::ui::ViewOwner> view_owner_request,
+GLView::GLView(InterfaceHandle<ApplicationConnector> app_connector,
+               InterfaceRequest<ViewOwner> view_owner_request,
                const std::string& label)
-    : BaseView(app_impl, view_owner_request.Pass(), label),
-      gl_renderer_(mojo::GLContext::CreateOffscreen(
-          ApplicationConnectorPtr::Create(
-              mojo::CreateApplicationConnector(app_impl->shell()))
-              .get())) {}
+    : BaseView(app_connector.Pass(), view_owner_request.Pass(), label),
+      gl_renderer_(GLContext::CreateOffscreen(BaseView::app_connector())) {}
 
 GLView::~GLView() {}
 
diff --git a/mojo/ui/gl_view.h b/mojo/ui/gl_view.h
index 7677084..e6687c8 100644
--- a/mojo/ui/gl_view.h
+++ b/mojo/ui/gl_view.h
@@ -17,22 +17,22 @@
 // content for the scene.
 class GLView : public BaseView {
  public:
-  GLView(mojo::ApplicationImpl* app_impl,
-         mojo::InterfaceRequest<mojo::ui::ViewOwner> view_owner_request,
+  GLView(InterfaceHandle<ApplicationConnector> app_connector,
+         InterfaceRequest<ViewOwner> view_owner_request,
          const std::string& label);
 
   ~GLView() override;
 
   // Gets the GL context, never null.
-  const scoped_refptr<mojo::GLContext>& gl_context() const {
+  const scoped_refptr<GLContext>& gl_context() const {
     return gl_renderer_.gl_context();
   }
 
   // Gets the GL renderer, never null.
-  mojo::ui::GLRenderer* gl_renderer() { return &gl_renderer_; }
+  GLRenderer* gl_renderer() { return &gl_renderer_; }
 
  private:
-  mojo::ui::GLRenderer gl_renderer_;
+  GLRenderer gl_renderer_;
 
   MOJO_DISALLOW_COPY_AND_ASSIGN(GLView);
 };
