diff --git a/examples/ui/noodles/noodles_view.cc b/examples/ui/noodles/noodles_view.cc
index 161794e..6c790a6 100644
--- a/examples/ui/noodles/noodles_view.cc
+++ b/examples/ui/noodles/noodles_view.cc
@@ -14,6 +14,7 @@
 #include "base/message_loop/message_loop.h"
 #include "examples/ui/noodles/frame.h"
 #include "examples/ui/noodles/rasterizer.h"
+#include "mojo/public/cpp/application/connect.h"
 #include "third_party/skia/include/core/SkCanvas.h"
 #include "third_party/skia/include/core/SkColor.h"
 #include "third_party/skia/include/core/SkPath.h"
@@ -65,10 +66,11 @@
 
   rasterizer_task_runner_->PostTask(
       FROM_HERE,
-      base::Bind(&RasterizerDelegate::CreateRasterizer,
-                 base::Unretained(rasterizer_delegate_.get()),
-                 base::Passed(app_impl->CreateApplicationConnector()),
-                 base::Passed(TakeScene().PassInterfaceHandle())));
+      base::Bind(
+          &RasterizerDelegate::CreateRasterizer,
+          base::Unretained(rasterizer_delegate_.get()),
+          base::Passed(mojo::CreateApplicationConnector(app_impl->shell())),
+          base::Passed(TakeScene().PassInterfaceHandle())));
 }
 
 NoodlesView::~NoodlesView() {
diff --git a/mojo/public/cpp/application/BUILD.gn b/mojo/public/cpp/application/BUILD.gn
index b2d0620..543207f 100644
--- a/mojo/public/cpp/application/BUILD.gn
+++ b/mojo/public/cpp/application/BUILD.gn
@@ -13,6 +13,7 @@
     "connection_context.h",
     "lib/application_delegate.cc",
     "lib/application_impl.cc",
+    "lib/connect.cc",
     "lib/service_provider_impl.cc",
     "service_connector.h",
     "service_provider_impl.h",
diff --git a/mojo/public/cpp/application/application_impl.h b/mojo/public/cpp/application/application_impl.h
index dd613f1..68dc565 100644
--- a/mojo/public/cpp/application/application_impl.h
+++ b/mojo/public/cpp/application/application_impl.h
@@ -12,7 +12,6 @@
 #include "mojo/public/cpp/application/application_delegate.h"
 #include "mojo/public/cpp/system/macros.h"
 #include "mojo/public/interfaces/application/application.mojom.h"
-#include "mojo/public/interfaces/application/application_connector.mojom.h"
 #include "mojo/public/interfaces/application/shell.mojom.h"
 
 namespace mojo {
@@ -55,12 +54,6 @@
   const std::vector<std::string>& args() const { return args_; }
   bool HasArg(const std::string& arg) const;
 
-  // Creates a new |ApplicationConnector|. The result can be bound to an
-  // |ApplicationConnectorPtr| and used to connect to other applications. (It
-  // returns an |InterfaceHandle| instead of an |InterfacePtr| to facilitate
-  // passing it to another thread.)
-  InterfaceHandle<ApplicationConnector> CreateApplicationConnector();
-
   // Blocks until the |Application| is initialized (i.e., |Initialize()| is
   // received), if it is not already.
   void WaitForInitialize();
@@ -84,7 +77,7 @@
  private:
   std::vector<std::unique_ptr<ServiceProviderImpl>> service_provider_impls_;
   ApplicationDelegate* delegate_;
-  Binding<Application> binding_;
+  Binding<Application> application_binding_;
   ShellPtr shell_;
   std::string url_;
   std::vector<std::string> args_;
diff --git a/mojo/public/cpp/application/application_test_base.h b/mojo/public/cpp/application/application_test_base.h
index 10763be..eb98b85 100644
--- a/mojo/public/cpp/application/application_test_base.h
+++ b/mojo/public/cpp/application/application_test_base.h
@@ -32,6 +32,8 @@
   ~ApplicationTestBase() override;
 
  protected:
+  // TODO(vtl): Probably should get rid of this. There's really not much reason
+  // to have an |ApplicationImpl|.
   ApplicationImpl* application_impl() { return application_impl_; }
 
   // Get the ApplicationDelegate for the application to be tested.
diff --git a/mojo/public/cpp/application/connect.h b/mojo/public/cpp/application/connect.h
index e9c0793..946ca7d 100644
--- a/mojo/public/cpp/application/connect.h
+++ b/mojo/public/cpp/application/connect.h
@@ -7,6 +7,7 @@
 #ifndef MOJO_PUBLIC_CPP_APPLICATION_CONNECT_H_
 #define MOJO_PUBLIC_CPP_APPLICATION_CONNECT_H_
 
+#include "mojo/public/cpp/bindings/interface_handle.h"
 #include "mojo/public/cpp/bindings/interface_request.h"
 #include "mojo/public/interfaces/application/application_connector.mojom.h"
 #include "mojo/public/interfaces/application/service_provider.mojom.h"
@@ -58,6 +59,10 @@
   ConnectToService(service_provider.get(), request.Pass());
 }
 
+// Helper for getting an |InterfaceHandle<ApplicationConnector>| (which can be
+// passed to any thread) from the shell.
+InterfaceHandle<ApplicationConnector> CreateApplicationConnector(Shell* shell);
+
 }  // namespace mojo
 
 #endif  // MOJO_PUBLIC_CPP_APPLICATION_CONNECT_H_
diff --git a/mojo/public/cpp/application/lib/application_impl.cc b/mojo/public/cpp/application/lib/application_impl.cc
index c87344b..42ebb8c 100644
--- a/mojo/public/cpp/application/lib/application_impl.cc
+++ b/mojo/public/cpp/application/lib/application_impl.cc
@@ -12,13 +12,12 @@
 #include "mojo/public/cpp/bindings/interface_ptr.h"
 #include "mojo/public/cpp/bindings/interface_request.h"
 #include "mojo/public/cpp/environment/logging.h"
-#include "mojo/public/cpp/system/message_pipe.h"
 
 namespace mojo {
 
 ApplicationImpl::ApplicationImpl(ApplicationDelegate* delegate,
                                  InterfaceRequest<Application> request)
-    : delegate_(delegate), binding_(this, request.Pass()) {}
+    : delegate_(delegate), application_binding_(this, request.Pass()) {}
 
 ApplicationImpl::~ApplicationImpl() {}
 
@@ -26,23 +25,15 @@
   return std::find(args_.begin(), args_.end(), arg) != args_.end();
 }
 
-InterfaceHandle<ApplicationConnector>
-ApplicationImpl::CreateApplicationConnector() {
-  MOJO_CHECK(shell_);
-  InterfaceHandle<ApplicationConnector> application_connector;
-  shell_->CreateApplicationConnector(GetProxy(&application_connector));
-  return application_connector;
-}
-
 void ApplicationImpl::WaitForInitialize() {
   if (!shell_)
-    binding_.WaitForIncomingMethodCall();
+    application_binding_.WaitForIncomingMethodCall();
 }
 
 void ApplicationImpl::UnbindConnections(
     InterfaceRequest<Application>* application_request,
     ShellPtr* shell) {
-  *application_request = binding_.Unbind();
+  *application_request = application_binding_.Unbind();
   shell->Bind(shell_.PassInterfaceHandle());
 }
 
diff --git a/mojo/public/cpp/application/lib/application_test_base.cc b/mojo/public/cpp/application/lib/application_test_base.cc
index 42519a2..f316daa 100644
--- a/mojo/public/cpp/application/lib/application_test_base.cc
+++ b/mojo/public/cpp/application/lib/application_test_base.cc
@@ -16,6 +16,7 @@
 namespace test {
 
 namespace {
+
 // Share the application command-line arguments with multiple application tests.
 Array<String> g_args;
 
@@ -31,11 +32,11 @@
 // calls so we can (re-)initialize new ApplicationImpls.
 ShellPtr g_shell;
 
-void InitializeArgs(int argc, std::vector<const char*> argv) {
+void InitializeArgs(int argc, const char** argv) {
   MOJO_CHECK(g_args.is_null());
-  for (const char* arg : argv) {
-    if (arg)
-      g_args.push_back(arg);
+  for (int i = 0; i < argc; i++) {
+    MOJO_CHECK(argv[i]);
+    g_args.push_back(argv[i]);
   }
 }
 
@@ -107,8 +108,9 @@
       argv[i] = args[i].get().c_str();
     argv[argc] = nullptr;
 
-    testing::InitGoogleTest(&argc, const_cast<char**>(&(argv[0])));
-    InitializeArgs(argc, argv);
+    // Note: |InitGoogleTest()| will modify |argc| and |argv[...]|.
+    testing::InitGoogleTest(&argc, const_cast<char**>(&argv[0]));
+    InitializeArgs(argc, &argv[0]);
 
     Environment::DestroyDefaultRunLoop();
   }
diff --git a/mojo/public/cpp/application/lib/connect.cc b/mojo/public/cpp/application/lib/connect.cc
new file mode 100644
index 0000000..33130da
--- /dev/null
+++ b/mojo/public/cpp/application/lib/connect.cc
@@ -0,0 +1,17 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "mojo/public/cpp/application/connect.h"
+
+#include "mojo/public/interfaces/application/shell.mojom.h"
+
+namespace mojo {
+
+InterfaceHandle<ApplicationConnector> CreateApplicationConnector(Shell* shell) {
+  InterfaceHandle<ApplicationConnector> application_connector;
+  shell->CreateApplicationConnector(GetProxy(&application_connector));
+  return application_connector;
+}
+
+}  // namespace mojo
diff --git a/mojo/ui/ganesh_view.cc b/mojo/ui/ganesh_view.cc
index 7dc9c7d..95b1170 100644
--- a/mojo/ui/ganesh_view.cc
+++ b/mojo/ui/ganesh_view.cc
@@ -5,6 +5,7 @@
 #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"
 
@@ -19,7 +20,7 @@
       ganesh_renderer_(
           new mojo::skia::GaneshContext(mojo::GLContext::CreateOffscreen(
               mojo::ApplicationConnectorPtr::Create(
-                  app_impl->CreateApplicationConnector())
+                  mojo::CreateApplicationConnector(app_impl->shell()))
                   .get()))) {}
 
 GaneshView::~GaneshView() {}
diff --git a/mojo/ui/gl_renderer_apptest.cc b/mojo/ui/gl_renderer_apptest.cc
index 21b1d72..03e799b 100644
--- a/mojo/ui/gl_renderer_apptest.cc
+++ b/mojo/ui/gl_renderer_apptest.cc
@@ -8,6 +8,7 @@
 #include "mojo/gpu/gl_texture.h"
 #include "mojo/public/cpp/application/application_impl.h"
 #include "mojo/public/cpp/application/application_test_base.h"
+#include "mojo/public/cpp/application/connect.h"
 #include "mojo/services/geometry/interfaces/geometry.mojom.h"
 #include "mojo/services/gfx/composition/interfaces/resources.mojom.h"
 #include "mojo/ui/gl_renderer.h"
@@ -29,7 +30,7 @@
     mojo::test::ApplicationTestBase::SetUp();
     gl_context_ = mojo::GLContext::CreateOffscreen(
         mojo::ApplicationConnectorPtr::Create(
-            application_impl()->CreateApplicationConnector())
+            mojo::CreateApplicationConnector(application_impl()->shell()))
             .get());
     quit_message_loop_callback_ = base::Bind(
         &GLRendererTest::QuitMessageLoopCallback, weak_factory_.GetWeakPtr());
diff --git a/mojo/ui/gl_view.cc b/mojo/ui/gl_view.cc
index 4ab635d..e3c80f5 100644
--- a/mojo/ui/gl_view.cc
+++ b/mojo/ui/gl_view.cc
@@ -5,6 +5,7 @@
 #include "mojo/ui/gl_view.h"
 
 #include "base/logging.h"
+#include "mojo/public/cpp/application/connect.h"
 
 namespace mojo {
 namespace ui {
@@ -15,7 +16,7 @@
     : BaseView(app_impl, view_owner_request.Pass(), label),
       gl_renderer_(mojo::GLContext::CreateOffscreen(
           ApplicationConnectorPtr::Create(
-              app_impl->CreateApplicationConnector())
+              mojo::CreateApplicationConnector(app_impl->shell()))
               .get())) {}
 
 GLView::~GLView() {}
diff --git a/shell/shell_apptest.cc b/shell/shell_apptest.cc
index 7f64883..42a5547 100644
--- a/shell/shell_apptest.cc
+++ b/shell/shell_apptest.cc
@@ -224,13 +224,15 @@
 
 TEST_F(ShellAppTest, ApplicationConnector) {
   mojo::ApplicationConnectorPtr app_connector;
-  app_connector.Bind(application_impl()->CreateApplicationConnector());
+  app_connector.Bind(
+      mojo::CreateApplicationConnector(application_impl()->shell()));
   TestApplicationConnector(app_connector.get());
 }
 
 TEST_F(ShellAppTest, ApplicationConnectorDuplicate) {
   mojo::ApplicationConnectorPtr app_connector1;
-  app_connector1.Bind(application_impl()->CreateApplicationConnector());
+  app_connector1.Bind(
+      mojo::CreateApplicationConnector(application_impl()->shell()));
   {
     SCOPED_TRACE("app_connector1");
     TestApplicationConnector(app_connector1.get());
