diff --git a/browserid/compress.sh b/browserid/compress.sh
index 01bf4b36d9422d8f4658bef299dcf52012c1cb05..15222180e0c687f5440e1c3eababc739c85f5027 100755
--- a/browserid/compress.sh
+++ b/browserid/compress.sh
@@ -32,9 +32,8 @@ cd dialog
 $UGLIFY < production.js > production.min.js
 mv production.min.js production.js
 
-cd ..
-steal/js relay/scripts/build.js
-cd relay
+cd ../relay
+cat ../dialog/resources/jschannel.js relay.js > production.js
 $UGLIFY < production.js > production.min.js
 mv production.min.js production.js
 
diff --git a/browserid/static/relay/relay.js b/browserid/static/relay/relay.js
index 20b18ead01f18b90ecbf3a07514bb4cfe693c60a..962d2c311cf7cdf8ef5ea7f89bf3b508437874aa 100644
--- a/browserid/static/relay/relay.js
+++ b/browserid/static/relay/relay.js
@@ -1,3 +1,5 @@
+/*global Channel: true, errorOut: true */
+
 /* ***** BEGIN LICENSE BLOCK *****
  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
  *
@@ -33,54 +35,47 @@
  *
  * ***** END LICENSE BLOCK ***** */
 
-/*globals steal
- */
-window.console = window.console || {
-  log: function() {}
-};
-
-steal.resources('../../dialog/resources/jschannel')
 
-          .then(function($) {
-            // XXX get rid of this setTimeout.  It is in so that the build 
-            // script can do its thing without creating the channel
-            setTimeout(function() {
-              var ipServer = "https://browserid.org";
+(function() {
+  "use strict";
 
-              var chan = Channel.build( {
-                window: window.parent,
-                origin: "*",
-                scope: "mozid"
-              } );
+  window.console = window.console || {
+    log: function() {}
+  };
 
-              var transaction;
-              var origin;
+  var ipServer = "https://browserid.org",
+      chan = Channel.build( {
+        window: window.parent,
+        origin: "*",
+        scope: "mozid"
+      } ),
+      transaction,
+      origin;
 
-              chan.bind("getVerifiedEmail", function(trans, s) {
-                origin = trans.origin;
-                trans.delayReturn(true);
+  chan.bind("getVerifiedEmail", function(trans, s) {
+    origin = trans.origin;
+    trans.delayReturn(true);
 
-                transaction = trans;
-              });
+    transaction = trans;
+  });
 
-              window.register_dialog = function(callback) {
-                // register the dialog, tell the dialog what the origin is.  
-                // Get the origin from the channel binding.
-                callback(origin);
-              };
+  window.register_dialog = function(callback) {
+    // register the dialog, tell the dialog what the origin is.  
+    // Get the origin from the channel binding.
+    callback(origin);
+  };
 
-              window.browserid_relay = function(status, error) {
-                  if(error) {
-                    errorOut(transaction, error);
-                  }
-                  else {
-                    try {
-                      transaction.complete(status);
-                    } catch(e) {
-                      // The relay function is called a second time after the 
-                      // initial success, when the window is closing.
-                    }
-                  }
-              }
-            }, 100);
-          });						// adds views to be added to build
+  window.browserid_relay = function(status, error) {
+      if(error) {
+        errorOut(transaction, error);
+      }
+      else {
+        try {
+          transaction.complete(status);
+        } catch(e) {
+          // The relay function is called a second time after the 
+          // initial success, when the window is closing.
+        }
+      }
+  };
+}());
diff --git a/browserid/static/relay/scripts/build.html b/browserid/static/relay/scripts/build.html
deleted file mode 100644
index e11cf9d1ed7a8053f539e4149ddbeafa617b6680..0000000000000000000000000000000000000000
--- a/browserid/static/relay/scripts/build.html
+++ /dev/null
@@ -1,21 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
-	"http://www.w3.org/TR/html4/strict.dtd">
-<html lang="en">
-	<head>
-		<title>relay Build Page</title>
-	</head>
-	<body>
-	    <h1>relay Build Page</h1>
-		<p>This is a dummy page that loads your app so steal can
-		   get all the files.  
-		</p>
-		<p>If you built your app
-		   to depend on HTML in the page before DOMContent loaded or 
-		   onload, you can add the HTML here, or you can change the
-		   build.js script to point to a better html file.
-		</p>
-		<script type='text/javascript' 
-	    src='../../steal/steal.js?relay'>	 
-        </script>
-	</body>
-</html>
diff --git a/browserid/static/relay/scripts/build.js b/browserid/static/relay/scripts/build.js
deleted file mode 100644
index 7b6fa82d15d2f7aae83787e7a579a9d161b32bbc..0000000000000000000000000000000000000000
--- a/browserid/static/relay/scripts/build.js
+++ /dev/null
@@ -1,8 +0,0 @@
-
-load("steal/rhino/steal.js");
-steal.plugins('steal/build','steal/build/scripts','steal/build/styles',function() {
-	steal.build('../static/relay/scripts/build.html',{
-        to: '../static/relay',
-        compressor: 'concatOnly'
-    });
-});
diff --git a/browserid/static/relay/scripts/clean.js b/browserid/static/relay/scripts/clean.js
deleted file mode 100644
index fc1cb75b3f401569dedb1754d3259831dbec0ad3..0000000000000000000000000000000000000000
--- a/browserid/static/relay/scripts/clean.js
+++ /dev/null
@@ -1,17 +0,0 @@
-//steal/js /web/browserid/browserid/static/dialog/dialog/scripts/compress.js
-
-load("steal/rhino/steal.js");
-steal.plugins('steal/clean',function(){
-	steal.clean('/web/browserid/browserid/static/relay/relay.html',{
-		indent_size: 1, 
-		indent_char: '\t', 
-		jslint : false,
-		ignore: /jquery\/jquery.js/,
-		predefined: {
-			steal: true, 
-			jQuery: true, 
-			$ : true,
-			window : true
-			}
-	});
-});
diff --git a/browserid/static/relay/scripts/docs.js b/browserid/static/relay/scripts/docs.js
deleted file mode 100644
index e9f61d1bd4dbfb1eb8f81555d12a0e10b004000b..0000000000000000000000000000000000000000
--- a/browserid/static/relay/scripts/docs.js
+++ /dev/null
@@ -1,6 +0,0 @@
-//js /web/browserid/browserid/static/dialog/dialog/scripts/doc.js
-
-load('steal/rhino/steal.js');
-steal.plugins("documentjs").then(function(){
-	DocumentJS('/web/browserid/browserid/static/dialog/dialog/dialog.html');
-});
\ No newline at end of file
diff --git a/browserid/views/relay.ejs b/browserid/views/relay.ejs
index e9d3485acc618c7782fae4234eced8d5380837ee..b6f4cc4f87f190231ac5fffe8912ea1a9c778823 100644
--- a/browserid/views/relay.ejs
+++ b/browserid/views/relay.ejs
@@ -6,6 +6,15 @@
 </head>
   <body>
       Relay iframe.  Woohoo!
-      <script type='text/javascript' src='https://browserid.org/steal/steal<%= production ? ".production" : "" %>.js?relay'></script>
+      <% if (production) { %>
+        <script type='text/javascript' 
+          src='https://browserid.org/relay/production.js'></script>
+
+      <% } else { %>
+        <script type='text/javascript' 
+          src='https://browserid.org/dialog/resources/jschannel.js'></script>
+        <script type='text/javascript' 
+          src='https://browserid.org/relay/relay.js'></script>
+      <% } %>
 	</body>
 </html>