diff --git a/Makefile b/Makefile
index ce984f4..b842125 100644
--- a/Makefile
+++ b/Makefile
@@ -1,7 +1,7 @@
 SHELL := /bin/bash -euo pipefail
 PWD := $(shell pwd)
 V23_GOPATH := $(shell echo `v23 run env | grep GOPATH | cut -d\= -f2`)
-DART_FILES := $(shell find dart/bin dart/lib dart/test -name "*.dart" -not -path "dart/lib/gen/*")
+DART_FILES := $(shell find dart/bin dart/lib dart/test sky_echo/lib -name "*.dart" -not -path "dart/lib/gen/*")
 GO_FILES := $(shell find go/src -name "*.go")
 V23_GO_FILES := $(shell find $(V23_ROOT) -name "*.go")
 
@@ -167,12 +167,17 @@
 	# TODO(nlacasse): Fix dart mojom binding generator so it does not produce
 	# files that violate dartanalyzer.  For now, we use "grep -v" to hide all
 	# warnings from *.mojom.dart files.
-	cd dart && dartanalyzer bin/*.dart lib/*.dart test/*.dart | grep -v '\.mojom\.dart'
+	cd dart && dartanalyzer bin/*.dart lib/*.dart test/*.dart | grep -v "\[hint\] Dead code.*\.mojom\.dart"
+	cd sky_echo && dartanalyzer lib/*.dart
 
 # Installs dart dependencies.
 dart/packages: dart/pubspec.yaml
 	cd dart && pub get
 
+# Installs dart dependencies.
+sky_echo/packages: sky_echo/pubspec.yaml
+	cd sky_echo && pub get
+
 .PHONY: run-syncbase-example
 run-syncbase-example: $(ETHER_BUILD_DIR)/syncbase_server.mojo dart/packages dart/lib/gen/dart-pkg/mojom/lib/mojo/syncbase.mojom.dart | env-check
 	$(MOJO_DIR)/src/mojo/devtools/common/mojo_run --config-file $(PWD)/mojoconfig $(MOJO_SHELL_FLAGS) $(MOJO_ANDROID_FLAGS) https://mojo.v.io/syncbase_example.dart
@@ -182,7 +187,7 @@
 	$(MOJO_DIR)/src/mojo/devtools/common/mojo_run --config-file $(PWD)/mojoconfig $(MOJO_SHELL_FLAGS) $(MOJO_ANDROID_FLAGS) https://mojo.v.io/echo_example.dart
 
 .PHONY: run-sky-echo
-run-sky-echo: $(ETHER_BUILD_DIR)/echo_server.mojo dart/packages dart/lib/gen/dart-pkg/mojom/lib/mojo/echo.mojom.dart | env-check
+run-sky-echo: $(ETHER_BUILD_DIR)/echo_server.mojo sky_echo/packages dart/lib/gen/dart-pkg/mojom/lib/mojo/echo.mojom.dart | env-check
 	$(MOJO_DIR)/src/mojo/devtools/common/mojo_run --config-file $(PWD)/sky_echo/mojoconfig $(MOJO_SHELL_FLAGS) $(MOJO_ANDROID_FLAGS) 'mojo:window_manager https://mojo.v.io/sky_echo/lib/main.dart'
 
 # TODO(nlacasse): The tests are currently flaky due to
diff --git a/dart/bin/echo_example.dart b/dart/bin/echo_example.dart
index 4d62e38..7bd205c 100755
--- a/dart/bin/echo_example.dart
+++ b/dart/bin/echo_example.dart
@@ -1,6 +1,6 @@
 #!mojo mojo:dart_content_handler
-import 'package:ether/initialized_application.dart' show InitializedApplication;
 import 'package:ether/echo_client.dart' show EchoClient;
+import 'package:ether/initialized_application.dart' show InitializedApplication;
 
 main(List args) async {
   InitializedApplication app = new InitializedApplication.fromHandle(args[0]);
@@ -8,7 +8,7 @@
 
   String url = 'https://mojo.v.io/echo_server.mojo';
 
-  EchoClient c = new EchoClient(app, url);
+  EchoClient c = new EchoClient(app.connectToService, url);
 
   String input = 'foobar';
   String output = await c.echo(input);
diff --git a/dart/lib/echo_client.dart b/dart/lib/echo_client.dart
index a32e9b4..a639253 100644
--- a/dart/lib/echo_client.dart
+++ b/dart/lib/echo_client.dart
@@ -2,29 +2,30 @@
 
 import 'dart:async';
 
-import 'package:mojo/application.dart' show Application;
+import 'package:mojo/bindings.dart' as bindings;
 
 import 'gen/dart-gen/mojom/lib/mojo/echo.mojom.dart' as mojom;
 
+typedef void ConnectToServiceFn(String url, bindings.ProxyBase proxy);
+
 class EchoClient {
-  final Application _app;
   final mojom.EchoProxy _proxy;
-  final String url;
+  final String _url;
 
   Future close({bool immediate: false}) {
     return _proxy.close(immediate: immediate);
   }
 
-  EchoClient(this._app, this.url) : _proxy = new mojom.EchoProxy.unbound() {
-    print('connecting to $url');
-    _app.connectToService(url, _proxy);
+  EchoClient(ConnectToServiceFn cts, this._url)
+      : _proxy = new mojom.EchoProxy.unbound() {
+    print('connecting to $_url');
+    cts(_url, _proxy);
     print('connected');
   }
 
   Future<String> echo(String s) async {
     print('calling echoString($s)');
     mojom.EchoEchoStringResponseParams v = await _proxy.ptr.echoString(s);
-
     String output = v.value;
     print('got echo result: $output');
     return output;
diff --git a/dart/test/echo_test.dart b/dart/test/echo_test.dart
index 00101eb..435fbbd 100644
--- a/dart/test/echo_test.dart
+++ b/dart/test/echo_test.dart
@@ -13,7 +13,7 @@
 
   String url = 'https://mojo.v.io/echo_server.mojo';
 
-  EchoClient c = new EchoClient(app, url);
+  EchoClient c = new EchoClient(app.connectToService, url);
 
   tearDown(() {
     app.resetConnections();
diff --git a/sky_echo/lib/main.dart b/sky_echo/lib/main.dart
index e461537..3c92aa9 100644
--- a/sky_echo/lib/main.dart
+++ b/sky_echo/lib/main.dart
@@ -1,97 +1,61 @@
-import 'package:sky/widgets.dart';
-
-class HelloWorldApp extends App {
-  Widget build() {
-    return new Center(child: new Text('Hello, world!'));
-  }
-}
-
-void main() {
-  runApp(new HelloWorldApp());
-}
-
-
-/*
-import 'package:sky/widgets.dart';
-
 import 'dart:async';
 
-import 'package:mojo/core.dart';
-import 'package:mojo/bindings.dart';
 import 'package:sky/mojo/embedder.dart' show embedder;
+import 'package:sky/widgets.dart';
 
-import 'package:ether/echo_client.dart' show EchoClient;
+import '../../dart/lib/echo_client.dart' show EchoClient;
+
+log(String msg) {
+  DateTime now = new DateTime.now();
+  print('${now.toString()} $msg');
+}
 
 class EchoApp extends App {
-  EchoApp() : super();
+  final EchoClient _c;
 
-  EchoClient c = new EchoClient(app, 'https://mojo.v.io/echo_server.mojo');
-  String sentMsg = '';
+  EchoApp()
+      : _c = new EchoClient(
+            embedder.connectToService, 'https://mojo.v.io/echo_server.mojo') {}
+
+  int seq = 0;
+  String sendMsg = '';
   String recvMsg = '';
-  bool connected = false;
 
-  void _connect() {
-    if (connected) return;
-    //embedder.connectToService('mojo:echo_server', echoProxy);
-    //embedder.connectToService('https://core.mojoapps.io/go_echo_server.mojo', echoProxy); // works with echo_server.mojo, but must use --enable-multiprocess for this one
-    embedder.connectToService('https://core.mojoapps.io/go_forward_echo_server.mojo', echoProxy);
+  Future doEcho() async {
+    log('EchoApp.doEcho');
+    setState(() {
+      sendMsg = seq.toString();
+      recvMsg = '';
+    });
+    seq++;
+    log('setState sendMsg done');
 
-    connected = true;
+    String recvMsgAsync = await _c.echo(sendMsg);
+
+    setState(() {
+      recvMsg = recvMsgAsync;
+    });
+    log('setState recvMsg done');
   }
 
-  Future doEcho({bool immediate: false}) async {
-    setState(() {
-      sendMsg = 'hello';
-    });
-    print('Sent message $sendMsg');
-
-    recvMsg = await c.echo(sendMsg);
-    _connect();
-    String msg = 'Hello ' + recvMsg;
-    setState(() {
-      sentMsg = msg;
-      print('Sending message $sentMsg');
-    });
-    try {
-      //final EchoEchoStringResponseParams result = await echoProxy.ptr.echoString(msg);
-      String endpoint = '/@5@wsh@172.17.166.74:33841@cbf4008c9abb8a430b1b455058e1e7ba@s@alexfandrianto@alexfandrianto0.mtv.corp.google.com-18361@@/mojo:go_echo_server/mojo::examples::Echo';
-      final ForwardEchoEchoForwardResponseParams result = await echoProxy.ptr.echoForward(msg, endpoint);
-
-      setState(() {
-        recvMsg = result.value;
-        print('Got message $recvMsg');
-      });
-    } catch(e) {
-      print('Error echoing: ' + e.toString());
-      return false;
-    }
-    return true;
-  }
-
+  // TODO(sadovsky): I don't think Sky calls App.close().
   Future close({bool immediate: false}) async {
-    await echoProxy.close(immediate: immediate);
-    return;
+    log('EchoApp.close');
+    return await _c.close(immediate: immediate);
   }
 
   Widget build() {
     return new Container(
-      decoration: const BoxDecoration(
-        backgroundColor: const Color(0xFF00ACC1)
-      ),
-      child: new Flex([
-        new RaisedButton(
-          child: new Text('Click here'),
-          onPressed: doEcho
-        ),
-        new Text('Sent message $sentMsg'),
-        new Text('Received message $recvMsg')
-      ],
-      direction: FlexDirection.vertical)
-    );
+        decoration:
+            const BoxDecoration(backgroundColor: const Color(0xFF00ACC1)),
+        child: new Flex([
+          new RaisedButton(child: new Text('doEcho'), onPressed: doEcho),
+          new Text('Sent message $sendMsg'),
+          new Text('Received message $recvMsg')
+        ], direction: FlexDirection.vertical));
   }
 }
 
 void main() {
   runApp(new EchoApp());
 }
-*/
diff --git a/sky_echo/mojoconfig b/sky_echo/mojoconfig
index 74d997d..36838cf 100644
--- a/sky_echo/mojoconfig
+++ b/sky_echo/mojoconfig
@@ -6,8 +6,10 @@
       'host': 'https://mojo.v.io/',
       'mappings': [
         ('packages/', [
+          # For echo_client.dart.
+          '@{ETHER_DIR}/dart/packages',
           # For sky/widgets.dart.
-          '@{ETHER_DIR}/sky_echo/packages'
+          '@{ETHER_DIR}/sky_echo/packages',
         ]),
         ('', [
           # For echo_server.mojo.
@@ -22,7 +24,7 @@
       'mappings': [
         ('', [
           # For sky_viewer.mojo.
-          '@{SKY_BUILD_DIR}'
+          '@{SKY_BUILD_DIR}',
         ]),
       ],
     }
