diff --git a/runtime/bin/vmservice/server.dart b/runtime/bin/vmservice/server.dart
index d622e62..051ea43 100644
--- a/runtime/bin/vmservice/server.dart
+++ b/runtime/bin/vmservice/server.dart
@@ -127,7 +127,7 @@
       _server = s;
       _server.listen(_requestHandler);
       if (display_message) {
-        print('VMService listening on $ip:$port');
+        print('Observatory listening on http://$ip:$port');
       }
       return s;
     });
diff --git a/runtime/vm/message_handler.cc b/runtime/vm/message_handler.cc
index 32756b8..b1064a2 100644
--- a/runtime/vm/message_handler.cc
+++ b/runtime/vm/message_handler.cc
@@ -9,7 +9,7 @@
 namespace dart {
 
 DECLARE_FLAG(bool, trace_isolates);
-
+DECLARE_FLAG(bool, trace_service_pause_events);
 
 class MessageHandlerTask : public ThreadPool::Task {
  public:
@@ -231,6 +231,10 @@
 
     if (!ok || !HasLivePorts()) {
       if (pause_on_exit()) {
+        if (FLAG_trace_service_pause_events && !paused_on_exit_) {
+          OS::PrintErr("Isolate %s paused before exiting. "
+                       "Use the Observatory to release it.\n", name());
+        }
         paused_on_exit_ = true;
       } else {
         if (FLAG_trace_isolates) {
diff --git a/runtime/vm/service.cc b/runtime/vm/service.cc
index eef5f05..5b3f778 100644
--- a/runtime/vm/service.cc
+++ b/runtime/vm/service.cc
@@ -32,6 +32,8 @@
 namespace dart {
 
 DEFINE_FLAG(bool, trace_service, false, "Trace VM service requests.");
+DEFINE_FLAG(bool, trace_service_pause_events, false,
+            "Trace VM service isolate pause events.");
 DECLARE_FLAG(bool, enable_type_checks);
 DECLARE_FLAG(bool, enable_asserts);
 
diff --git a/sdk/lib/html/dart2js/html_dart2js.dart b/sdk/lib/html/dart2js/html_dart2js.dart
index fbbdd1a..e44393d 100644
--- a/sdk/lib/html/dart2js/html_dart2js.dart
+++ b/sdk/lib/html/dart2js/html_dart2js.dart
@@ -6309,7 +6309,7 @@
 
 @DocsEditable()
 @DomName('Clipboard')
-class DataTransfer extends Interceptor native "Clipboard" {
+class DataTransfer extends Interceptor native "Clipboard,DataTransfer" {
   // To suppress missing implicit constructor warnings.
   factory DataTransfer._() { throw new UnsupportedError("Not supported"); }
 
diff --git a/tests/standalone/vmservice/test_helper.dart b/tests/standalone/vmservice/test_helper.dart
index d7c580e..fde93e0 100644
--- a/tests/standalone/vmservice/test_helper.dart
+++ b/tests/standalone/vmservice/test_helper.dart
@@ -140,7 +140,7 @@
       var first = true;
       process.stdout.transform(UTF8.decoder)
                     .transform(new LineSplitter()).listen((line) {
-        if (line.startsWith('VMService listening on ')) {
+        if (line.startsWith('Observatory listening on http://')) {
           RegExp portExp = new RegExp(r"\d+.\d+.\d+.\d+:(\d+)");
           var port = portExp.firstMatch(line).group(1);
           portNumber = int.parse(port);
diff --git a/tools/VERSION b/tools/VERSION
index 6374033..f5bb2b3 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -28,4 +28,4 @@
 MINOR 4
 PATCH 0
 PRERELEASE 6
-PRERELEASE_PATCH 2
+PRERELEASE_PATCH 3
diff --git a/tools/dom/scripts/generator.py b/tools/dom/scripts/generator.py
index 50a3199..e5b4190 100644
--- a/tools/dom/scripts/generator.py
+++ b/tools/dom/scripts/generator.py
@@ -118,6 +118,8 @@
         #                    IE                   Firefox
         'CSSStyleDeclaration,MSStyleCSSProperties,CSS2Properties',
 
+    'Clipboard': 'Clipboard,DataTransfer',
+
     'ApplicationCache':
         'ApplicationCache,DOMApplicationCache,OfflineResourceList',
 
@@ -422,7 +424,7 @@
         optional parameters
       named is a boolean which is true if the optional parameters should
         be named
-      A parameter declaration is a tuple (dec, var) where var is the 
+      A parameter declaration is a tuple (dec, var) where var is the
         variable name, and dec is a string suitable for declaring the
         variable in a parameter list.  That is, dec + var is a valid
         parameter declaration.
@@ -445,12 +447,12 @@
 
   def ParametersAsDecStringList(self, rename_type, force_optional=False):
     """Returns a list of strings where each string corresponds to a parameter
-    declaration.  All of the optional/named parameters if any will appear as 
+    declaration.  All of the optional/named parameters if any will appear as
     a single entry at the end of the list.
     """
     (required, optional, needs_named) = \
         self.ParametersAsDecVarLists(rename_type, force_optional)
-    def FormatParam(dec): 
+    def FormatParam(dec):
         return dec[0] + dec[1]
     argtexts = map(FormatParam, required)
     if optional:
