diff --git a/lib/base_shell/BUILD.gn b/lib/base_shell/BUILD.gn
index a57f655..574bd51 100644
--- a/lib/base_shell/BUILD.gn
+++ b/lib/base_shell/BUILD.gn
@@ -23,8 +23,10 @@
     "$peridot_sdk_fidl/fuchsia.modular.auth",
     "//third_party/dart-pkg/git/flutter/packages/flutter",
     "//topaz/public/dart/fidl",
+    "//topaz/public/dart/fuchsia_scenic_flutter",
     "//topaz/public/dart/widgets:lib.widgets",
     "//topaz/public/lib/app/dart",
+    "//topaz/public/lib/ui/flutter",
     "//topaz/shell/widgets",
     "//zircon/public/fidl/fuchsia-net:fuchsia-net",
   ]
diff --git a/lib/base_shell/lib/base_model.dart b/lib/base_shell/lib/base_model.dart
index 958e179..d0b881b 100644
--- a/lib/base_shell/lib/base_model.dart
+++ b/lib/base_shell/lib/base_model.dart
@@ -14,11 +14,14 @@
 import 'package:fidl_fuchsia_ui_gfx/fidl.dart';
 import 'package:fidl_fuchsia_ui_input/fidl.dart' as input;
 import 'package:fidl_fuchsia_ui_policy/fidl.dart';
+import 'package:fuchsia_scenic_flutter/child_view_connection.dart'
+    show ChildViewConnection;
 import 'package:lib.app.dart/app.dart' as app;
 import 'package:lib.app.dart/logging.dart';
-import 'package:lib.ui.flutter/child_view.dart';
+import 'package:lib.ui.flutter/child_view.dart' as deprecated
+    show ChildViewConnection;
 import 'package:meta/meta.dart';
-import 'package:zircon/zircon.dart' show Channel;
+import 'package:zircon/zircon.dart' show Channel, EventPair;
 
 import 'base_shell_model.dart';
 import 'netstack_model.dart';
@@ -60,6 +63,8 @@
   List<Account> _accounts;
 
   /// Childview connection that contains the session shell.
+  bool _shouldCreateNewChildView = false;
+  deprecated.ChildViewConnection _deprecatedChildViewConnection;
   ChildViewConnection _childViewConnection;
 
   final List<KeyboardCaptureListenerHackBinding> _keyBindings = [];
@@ -82,7 +87,13 @@
   List<Account> get accounts => _accounts;
 
   /// Returns the authenticated child view connection
-  ChildViewConnection get childViewConnection => _childViewConnection;
+  deprecated.ChildViewConnection get childViewConnection =>
+      _deprecatedChildViewConnection;
+  ChildViewConnection get childViewConnectionNew => _childViewConnection;
+
+  set shouldCreateNewChildView(bool should) {
+    _shouldCreateNewChildView = should;
+  }
 
   @override
   void captureKeyboardEventHack(input.KeyboardEvent eventToCapture,
@@ -200,21 +211,40 @@
     final viewOwnerHandle =
         _userManager.login(accountId, serviceProvider.passHandle());
 
-    _childViewConnection = ChildViewConnection(
-      viewOwnerHandle,
-      onAvailable: (ChildViewConnection connection) {
-        trace('session shell available');
-        log.info('BaseShell: Child view connection available!');
-        connection.requestFocus();
-        notifyListeners();
-      },
-      onUnavailable: (ChildViewConnection connection) {
-        trace('BaseShell: Child view connection now unavailable!');
-        log.info('BaseShell: Child view connection now unavailable!');
-        onLogout();
-        notifyListeners();
-      },
-    );
+    if (_shouldCreateNewChildView) {
+      _childViewConnection = ChildViewConnection.fromViewHolderToken(
+        EventPair(viewOwnerHandle.passChannel().passHandle()),
+        onAvailable: (ChildViewConnection connection) {
+          trace('session shell available');
+          log.info('BaseShell: Child view connection available!');
+          connection.requestFocus();
+          notifyListeners();
+        },
+        onUnavailable: (ChildViewConnection connection) {
+          trace('BaseShell: Child view connection now unavailable!');
+          log.info('BaseShell: Child view connection now unavailable!');
+          onLogout();
+          notifyListeners();
+        },
+      );
+    } else {
+      _deprecatedChildViewConnection =
+          deprecated.ChildViewConnection.fromViewHolderToken(
+        EventPair(viewOwnerHandle.passChannel().passHandle()),
+        onAvailable: (deprecated.ChildViewConnection connection) {
+          trace('session shell available');
+          log.info('BaseShell: Child view connection available!');
+          connection.requestFocus();
+          notifyListeners();
+        },
+        onUnavailable: (deprecated.ChildViewConnection connection) {
+          trace('BaseShell: Child view connection now unavailable!');
+          log.info('BaseShell: Child view connection now unavailable!');
+          onLogout();
+          notifyListeners();
+        },
+      );
+    }
     notifyListeners();
   }
 
@@ -222,6 +252,7 @@
   @mustCallSuper
   Future<void> onLogout() async {
     trace('logout');
+    _deprecatedChildViewConnection = null;
     _childViewConnection = null;
     _serviceProviderBinding.close();
     for (PresentationBinding presentationBinding in _presentationBindings) {
diff --git a/public/lib/mediaplayer/flutter/BUILD.gn b/public/lib/mediaplayer/flutter/BUILD.gn
index 0a2ba03..6098842 100644
--- a/public/lib/mediaplayer/flutter/BUILD.gn
+++ b/public/lib/mediaplayer/flutter/BUILD.gn
@@ -19,7 +19,7 @@
     "$garnet_sdk_fidl/fuchsia.media",
     "$garnet_sdk_fidl/fuchsia.ui.viewsv1",
     "//third_party/dart-pkg/git/flutter/packages/flutter",
-    "//topaz/public/dart/fidl",
+    "//topaz/public/dart/fuchsia_scenic_flutter",
     "//topaz/public/lib/app/dart",
     "//topaz/public/lib/mediaplayer/dart",
     "//topaz/public/lib/ui/flutter",
diff --git a/public/lib/mediaplayer/flutter/media_player_controller.dart b/public/lib/mediaplayer/flutter/media_player_controller.dart
index 74a2290..671eb8a 100644
--- a/public/lib/mediaplayer/flutter/media_player_controller.dart
+++ b/public/lib/mediaplayer/flutter/media_player_controller.dart
@@ -8,24 +8,24 @@
 import 'package:fidl_fuchsia_math/fidl.dart' as geom;
 import 'package:fidl_fuchsia_mediaplayer/fidl.dart';
 import 'package:fidl_fuchsia_sys/fidl.dart';
-import 'package:fidl_fuchsia_ui_viewsv1/fidl.dart';
-import 'package:fidl/fidl.dart';
-import 'package:lib.app.dart/app.dart';
-import 'package:lib.mediaplayer.dart/audio_player_controller.dart';
-import 'package:lib.ui.flutter/child_view.dart';
-
 import 'package:flutter/foundation.dart';
 import 'package:flutter/widgets.dart';
+import 'package:fuchsia_scenic_flutter/child_view_connection.dart'
+    show ChildViewConnection;
+import 'package:lib.mediaplayer.dart/audio_player_controller.dart';
+import 'package:lib.ui.flutter/child_view.dart' as deprecated
+    show ChildViewConnection;
+import 'package:zircon/zircon.dart';
 
 /// Controller for MediaPlayer widgets.
 class MediaPlayerController extends AudioPlayerController
     implements Listenable {
   final List<VoidCallback> _listeners = <VoidCallback>[];
 
-  ServiceProvider _services;
-
   Timer _hideTimer;
 
+  bool _shouldCreateNewChildView = false;
+  deprecated.ChildViewConnection _deprecatedVideoViewConnection;
   ChildViewConnection _videoViewConnection;
 
   Size _videoSize = Size.zero;
@@ -36,10 +36,13 @@
   /// Constructs a MediaPlayerController.
   MediaPlayerController(ServiceProvider services) : super(services) {
     updateCallback = _notifyListeners;
-    _services = services;
     _close(); // Initialize stuff.
   }
 
+  set shouldCreateNewChildView(bool should) {
+    _shouldCreateNewChildView = should;
+  }
+
   @override
   void open(Uri uri, {HttpHeaders headers}) {
     _wasActive = openOrConnected;
@@ -50,14 +53,18 @@
   @override
   void onMediaPlayerCreated(PlayerProxy player) {
     if (!_wasActive) {
-      ViewManagerProxy viewManager = new ViewManagerProxy();
-      connectToService(_services, viewManager.ctrl);
+      final EventPairPair viewTokens = new EventPairPair();
+      assert(viewTokens.status == ZX.OK);
+      player.createView2(viewTokens.first);
 
-      InterfacePair<ViewOwner> viewOwnerPair = new InterfacePair<ViewOwner>();
-      player.createView(viewManager.ctrl.unbind(), viewOwnerPair.passRequest());
-
-      _videoViewConnection =
-          new ChildViewConnection(viewOwnerPair.passHandle());
+      if (_shouldCreateNewChildView) {
+        _videoViewConnection =
+            ChildViewConnection.fromViewHolderToken(viewTokens.second);
+      } else {
+        _deprecatedVideoViewConnection =
+            deprecated.ChildViewConnection.fromViewHolderToken(
+                viewTokens.second);
+      }
     }
   }
 
@@ -69,6 +76,7 @@
   }
 
   void _close() {
+    _deprecatedVideoViewConnection = null;
     _videoViewConnection = null;
   }
 
@@ -138,7 +146,9 @@
   Size get videoPhysicalSize => hasVideo ? _videoSize : Size.zero;
 
   /// Gets the video view connection.
-  ChildViewConnection get videoViewConnection => _videoViewConnection;
+  deprecated.ChildViewConnection get videoViewConnection =>
+      _deprecatedVideoViewConnection;
+  ChildViewConnection get videoViewConnectionNew => _videoViewConnection;
 
   @override
   void onVideoGeometryUpdated(geom.Size videoSize, geom.Size pixelAspectRatio) {
