diff --git a/public/dart/fuchsia_modular/lib/src/module/internal/_module_impl.dart b/public/dart/fuchsia_modular/lib/src/module/internal/_module_impl.dart
index cfeb564..693f3b3 100644
--- a/public/dart/fuchsia_modular/lib/src/module/internal/_module_impl.dart
+++ b/public/dart/fuchsia_modular/lib/src/module/internal/_module_impl.dart
@@ -60,7 +60,7 @@
   }
 
   @override
-  Future<modular.ModuleController> addModuleToStory({
+  Future<modular.ModuleControllerProxy> addModuleToStory({
     @required String name,
     @required modular.Intent intent,
     modular.SurfaceRelation surfaceRelation = const modular.SurfaceRelation(
diff --git a/public/dart/fuchsia_modular/lib/src/module/module.dart b/public/dart/fuchsia_modular/lib/src/module/module.dart
index 57f902a..192871e 100644
--- a/public/dart/fuchsia_modular/lib/src/module/module.dart
+++ b/public/dart/fuchsia_modular/lib/src/module/module.dart
@@ -54,10 +54,12 @@
   /// be closed). If the [intent] is resolved to the same module, the module
   /// will get the intent.
   ///
-  /// A [modular.ModuleController] is returned to the caller to control the start
-  /// Module instance. Closing this connection doesn't affect its Module
+  /// A [modular.ModuleControllerProxy] is returned to the caller to control the started
+  /// Module instance. Closing this connection to the proxy doesn't affect its Module
   /// instance; it just relinquishes the ability of the caller to control the
-  /// Module instance.
+  /// Module instance. To explicitly stop the running module callers should call
+  /// [module.ModuleControllerPoxy#stop] method which will cause the module instance
+  /// to shutdown and be removed from the story.
   ///
   /// The [name] parameter can be used identify a view in the resulting story
   /// and can be used to either update a running module with a new [intent] or
@@ -80,7 +82,7 @@
   /// Module().addModuleToStory(name: 'foo', intent: foo_intent);
   /// Module().addModuleToStory(name: 'bar', intent: bar_intent);
   /// ```
-  Future<modular.ModuleController> addModuleToStory({
+  Future<modular.ModuleControllerProxy> addModuleToStory({
     @required String name,
     @required modular.Intent intent,
     modular.SurfaceRelation surfaceRelation,
diff --git a/public/dart/fuchsia_modular/test/module/internal/module_impl_integ_test.dart b/public/dart/fuchsia_modular/test/module/internal/module_impl_integ_test.dart
index 6b787d4..5ee0a94 100644
--- a/public/dart/fuchsia_modular/test/module/internal/module_impl_integ_test.dart
+++ b/public/dart/fuchsia_modular/test/module/internal/module_impl_integ_test.dart
@@ -31,7 +31,7 @@
         IntentHandlerImpl(startupContext: StartupContext.fromStartupInfo());
   });
 
-  test('addModuleToStory should return ModuleController upon success',
+  test('addModuleToStory should return ModuleControllerProxy upon success',
       () async {
     final context = MockModuleContext();
     when(context.addModuleToStory(any, any, any, any))
@@ -42,7 +42,7 @@
 
     final ctrl = await moduleImpl.addModuleToStory(
         name: 'testMod', intent: _emptyIntent);
-    expect(ctrl, const TypeMatcher<fidl.ModuleController>());
+    expect(ctrl, const TypeMatcher<fidl.ModuleControllerProxy>());
   });
 
   test(
