diff --git a/src/rpc/client.js b/src/rpc/client.js
index 4960d99..21a7d9a 100644
--- a/src/rpc/client.js
+++ b/src/rpc/client.js
@@ -348,7 +348,7 @@
  *
  * Usage:
  * <pre>
- * runtime.bindTo(context, 'Service/Name').then(function(service) {
+ * client.bindTo(context, 'Service/Name').then(function(service) {
  *    service.fooMethod(fooArgs).then(function(methodCallResult) {
  *      // Do stuff with results.
  *    }).catch(function(err) {
@@ -400,7 +400,7 @@
  *
  * Usage:
  * <pre>
- * var service = runtime.bindWithSignature('Service/Name', signature);
+ * var service = client.bindWithSignature('Service/Name', signature);
  * service.fooMethod(fooArgs).then(function(methodCallResult) {
  *   // Do stuff with results.
  * }).catch(function(err) {
diff --git a/src/rpc/constants.js b/src/rpc/constants.js
index ec41111..49e9cd2 100644
--- a/src/rpc/constants.js
+++ b/src/rpc/constants.js
@@ -3,7 +3,7 @@
 // license that can be found in the LICENSE file.
 
 /**
- * @fileoverview Constants related to ipc.
+ * @fileoverview Constants related to rpc.
  * @private
  */
 
diff --git a/src/rpc/glob.js b/src/rpc/glob.js
index 9043c39..a267773 100644
--- a/src/rpc/glob.js
+++ b/src/rpc/glob.js
@@ -38,7 +38,7 @@
   }
   // TODO(bjornick): Make sure that the glob input is actually valid.
   // We don't need to do this now, but we do need to do it once we move
-  // more of the ipc implementation to JS.
+  // more of the rpc implementation to JS.
   this.patterns = this.elems.map(function(elem) {
     return minimatch.makeRe(elem, minimatchOptions);
   });
diff --git a/test/integration/test-js-client-server.js b/test/integration/test-js-client-server.js
index cbbaf6a..fd84c1b 100644
--- a/test/integration/test-js-client-server.js
+++ b/test/integration/test-js-client-server.js
@@ -134,7 +134,7 @@
 
 // options: testName, definition, name
 function runCache(options) {
-  var namePrefix = 'Test JS client/server ipc ' + options.testName + ' - ';
+  var namePrefix = 'Test JS client/server rpc ' + options.testName + ' - ';
 
   test(namePrefix + 'cache.set(key, string) -> cache.get(key)',
             function(t) {
@@ -393,7 +393,7 @@
 
 // options: testName, definition, name
 function runTypeService(options) {
-  var namePrefix = 'Test JS client/server ipc ' + options.testName + ' - ';
+  var namePrefix = 'Test JS client/server rpc ' + options.testName + ' - ';
   // This test ensures that typed values are sent between JS server and client.
   // The server expects an input of the ANY type, which means that it ought to
   // receive a typed value, if we send a typed value.
@@ -772,7 +772,7 @@
 
 // options: testName, definition, name
 function runTypedStreamingService(options) {
-  var namePrefix = 'Test JS client/server ipc ' + options.testName + ' - ';
+  var namePrefix = 'Test JS client/server rpc ' + options.testName + ' - ';
 
   // typedStreamingService.inStreamOnly tests:
   // - correct # of values sent to server
diff --git a/test/unit/test-ipc-client.js b/test/unit/test-rpc-client.js
similarity index 100%
rename from test/unit/test-ipc-client.js
rename to test/unit/test-rpc-client.js
diff --git a/test/unit/test-ipc-signature-cache.js b/test/unit/test-rpc-signature-cache.js
similarity index 100%
rename from test/unit/test-ipc-signature-cache.js
rename to test/unit/test-rpc-signature-cache.js
diff --git a/test/vom/test-vdl-arith.js b/test/vom/test-vdl-arith.js
index 0f22713..9ec3d9f 100644
--- a/test/vom/test-vdl-arith.js
+++ b/test/vom/test-vdl-arith.js
@@ -38,7 +38,7 @@
     var signature = arith.AdvancedMath.prototype.
                     _serviceDescription;
 
-    // Encode the signature using the type defined in VDL-generated ipc.js
+    // Encode the signature using the type defined in VDL-generated .js file
     writer = new vom.ByteArrayMessageWriter();
     encoder = new vom.Encoder(writer);
     encoder.encode(signature, ifaceSigType.prototype._type);
