diff --git a/lib/nodejs/examples/hello.html b/lib/nodejs/examples/hello.html
index 0897ea9..fe85a7e 100644
--- a/lib/nodejs/examples/hello.html
+++ b/lib/nodejs/examples/hello.html
@@ -26,13 +26,13 @@
 </head>
 <body>
     <h1>Apache Thrift JavaScript Browser Client Demo</h1>
-    <p>This html file demonstrates Apache Thrift JavaScrpt RPC between a browser client to a node.js server. Clicking the button below will call the hello_func() hosted by the Apache Thrift server at localhost:8585. The file hello.js contains the JavaScript node.js server required. Here are the steps to get the example running:</p>
+    <p>This html file demonstrates Apache Thrift JavaScrpt RPC between a browser client to a node.js server. Clicking the buttons below will call the RPC functions hosted by the Apache Thrift server at localhost:8585. The file hello.js contains the JavaScript node.js server required. Here are the steps to get the example running:</p>
     <ol>
         <li>Install Node.js <pre><a href="http://nodejs.org">nodejs.org</a></pre></li>
         <li>Install Apache Thrift for node (note that the node package manager will create the node_modules folder in the current directory so make sure to run npm from the same directory as hello.js so that the server can find the Thrift libraries. This example requires Apache Thrift 0.9.2+) <pre>$ npm install thrift</pre></li>
         <li>Compile the hello.idl for JavaScript and Node.js (you'll need to have the Apache Thrift compiler installed for this step. This also needs to be executed in the same directory as hello.js because hello.js and hello.html look for the gen-nodejs and gen-js directories here.)<pre>$ thrift -gen js -gen js:node hello.thrift</pre></li>
         <li>Run the node server in the directory with the hello.html file<pre>$ node hello.js</pre></li>
-        <li>Copy the Apache Thrift JavaScript library, thrift.js, into the directory with this html file.<pre>$ cp ...../thrift.js .</pre>
+        <li>Copy the Apache Thrift JavaScript library, thrift.js, into the directory with this html file.<pre>$ cp ...../thrift.js . (you should be able to use Bower to install the browser based Apache Thrift library in the near future.)</pre>
         <li>Reload this page in a browser through the node server using using the URL: <pre>http://localhost:8585/hello.html</pre>then click a button below to make an RPC call</li>
     </ol>
     <button id="btn">Get Message from Node Server</button>
@@ -41,8 +41,8 @@
         document.getElementById("btn").addEventListener("click", getMessage, false);
 
         function getMessage() {
-            var transport = new Thrift.Transport("http://localhost:8585/hello");
-            var protocol  = new Thrift.Protocol(transport);
+            var transport = new Thrift.TXHRTransport("http://localhost:8585/hello");
+            var protocol  = new Thrift.TJSONProtocol(transport);
             var client = new HelloSvcClient(protocol);
             var msg = client.hello_func();
             document.getElementById("output").innerHTML = msg;
@@ -51,8 +51,8 @@
         document.getElementById("btnDbl").addEventListener("click", dblMessage, false);
 
         function dblMessage() {
-            var transport = new Thrift.Transport("http://localhost:8585/dbl");
-            var protocol  = new Thrift.Protocol(transport);
+            var transport = new Thrift.TXHRTransport("http://localhost:8585/dbl");
+            var protocol  = new Thrift.TJSONProtocol(transport);
             var client = new TimesTwoClient(protocol);
             var val = client.dbl(25);
             document.getElementById("output2").innerHTML = val;
diff --git a/lib/nodejs/examples/hello.js b/lib/nodejs/examples/hello.js
index 90634c9..8b7c4e4 100644
--- a/lib/nodejs/examples/hello.js
+++ b/lib/nodejs/examples/hello.js
@@ -17,8 +17,6 @@
  * under the License.
  */
 var thrift = require('thrift');
-var TBufferedTransport = require('thrift/transport').TBufferedTransport;
-var TJSONProtocol = require('thrift/protocol').TJSONProtocol;
 var HelloSvc = require('./gen-nodejs/HelloSvc.js');
 var TimesTwoSvc = require('./gen-nodejs/TimesTwo.js');
 
@@ -38,28 +36,28 @@
 }
 
 var helloService = {
-	transport: TBufferedTransport,
-	protocol: TJSONProtocol,
-	cls: HelloSvc,
+	transport: thrift.TBufferedTransport,
+	protocol: thrift.TJSONProtocol,
+	processor: HelloSvc,
 	handler: helloHandler
 };
 
 var dblService = {
-	transport: TBufferedTransport,
-	protocol: TJSONProtocol,
-	cls: TimesTwoSvc,
+	transport: thrift.TBufferedTransport,
+	protocol: thrift.TJSONProtocol,
+	processor: TimesTwoSvc,
 	handler: timesTwoHandler
 };
 
-var StaticHttpThriftServerOptions = {
-	staticFilePath: ".",
+var ServerOptions = {
+	files: ".",
 	services: {
 		"/hello": helloService,
 		"/dbl": dblService,
 	}
 }
 
-var server = thrift.createStaticHttpThriftServer(StaticHttpThriftServerOptions);
+var server = thrift.createWebServer(ServerOptions);
 var port = 8585;
 server.listen(port);
 console.log("Http/Thrift Server running on port: " + port);
