diff --git a/src/node/examples/math_server.js b/src/node/examples/math_server.js
index b1f8a6323fcabbb5022f9bcd73b799b680b7efce..31892c65df31a08a448f68df178932ee78fe4d2d 100644
--- a/src/node/examples/math_server.js
+++ b/src/node/examples/math_server.js
@@ -115,7 +115,7 @@ server.addProtoService(math.Math.service, {
 });
 
 if (require.main === module) {
-  server.bind('0.0.0.0:50051');
+  server.bind('0.0.0.0:50051', grpc.ServerCredentials.createInsecure());
   server.start();
 }
 
diff --git a/src/node/examples/route_guide_server.js b/src/node/examples/route_guide_server.js
index 70044a322cbe50c8fef722aba4c47a9e068b770f..bb8e79b5bd3ccd3ef3fe7f36087df10d1b6bab78 100644
--- a/src/node/examples/route_guide_server.js
+++ b/src/node/examples/route_guide_server.js
@@ -239,7 +239,7 @@ function getServer() {
 if (require.main === module) {
   // If this is run as a script, start a server on an unused port
   var routeServer = getServer();
-  routeServer.bind('0.0.0.0:50051');
+  routeServer.bind('0.0.0.0:50051', grpc.ServerCredentials.createInsecure());
   var argv = parseArgs(process.argv, {
     string: 'db_path'
   });
diff --git a/src/node/examples/stock_server.js b/src/node/examples/stock_server.js
index f2eb6ad4ab9a47533ea9d583bfb8eab38fea6f93..dfcfe30eb4374d5161ef475f018a03f55c9a32a4 100644
--- a/src/node/examples/stock_server.js
+++ b/src/node/examples/stock_server.js
@@ -80,7 +80,7 @@ stockServer.addProtoService(examples.Stock.service, {
 });
 
 if (require.main === module) {
-  stockServer.bind('0.0.0.0:50051');
+  stockServer.bind('0.0.0.0:50051', grpc.ServerCredentials.createInsecure());
   stockServer.listen();
 }
 
diff --git a/src/node/ext/server.cc b/src/node/ext/server.cc
index 8554fce777271df1119cc488399460459c76f1ad..04fabc871d2db7a7a99b05db8171ba8c52af669e 100644
--- a/src/node/ext/server.cc
+++ b/src/node/ext/server.cc
@@ -136,10 +136,6 @@ void Server::Init(Handle<Object> exports) {
       tpl, "addHttp2Port",
       NanNew<FunctionTemplate>(AddHttp2Port)->GetFunction());
 
-  NanSetPrototypeTemplate(
-      tpl, "addSecureHttp2Port",
-      NanNew<FunctionTemplate>(AddSecureHttp2Port)->GetFunction());
-
   NanSetPrototypeTemplate(tpl, "start",
                           NanNew<FunctionTemplate>(Start)->GetFunction());
 
@@ -246,45 +242,37 @@ NAN_METHOD(Server::RequestCall) {
 }
 
 NAN_METHOD(Server::AddHttp2Port) {
-  NanScope();
-  if (!HasInstance(args.This())) {
-    return NanThrowTypeError("addHttp2Port can only be called on a Server");
-  }
-  if (!args[0]->IsString()) {
-    return NanThrowTypeError("addHttp2Port's argument must be a String");
-  }
-  Server *server = ObjectWrap::Unwrap<Server>(args.This());
-  if (server->wrapped_server == NULL) {
-    return NanThrowError("addHttp2Port cannot be called on a shut down Server");
-  }
-  NanReturnValue(NanNew<Number>(grpc_server_add_http2_port(
-      server->wrapped_server, *NanUtf8String(args[0]))));
-}
-
-NAN_METHOD(Server::AddSecureHttp2Port) {
   NanScope();
   if (!HasInstance(args.This())) {
     return NanThrowTypeError(
-        "addSecureHttp2Port can only be called on a Server");
+        "addHttp2Port can only be called on a Server");
   }
   if (!args[0]->IsString()) {
     return NanThrowTypeError(
-        "addSecureHttp2Port's first argument must be a String");
+        "addHttp2Port's first argument must be a String");
   }
   if (!ServerCredentials::HasInstance(args[1])) {
     return NanThrowTypeError(
-        "addSecureHttp2Port's second argument must be ServerCredentials");
+        "addHttp2Port's second argument must be ServerCredentials");
   }
   Server *server = ObjectWrap::Unwrap<Server>(args.This());
   if (server->wrapped_server == NULL) {
     return NanThrowError(
-        "addSecureHttp2Port cannot be called on a shut down Server");
+        "addHttp2Port cannot be called on a shut down Server");
   }
-  ServerCredentials *creds = ObjectWrap::Unwrap<ServerCredentials>(
+  ServerCredentials *creds_object = ObjectWrap::Unwrap<ServerCredentials>(
       args[1]->ToObject());
-  NanReturnValue(NanNew<Number>(grpc_server_add_secure_http2_port(
-      server->wrapped_server, *NanUtf8String(args[0]),
-      creds->GetWrappedServerCredentials())));
+  grpc_server_credentials *creds = creds_object->GetWrappedServerCredentials();
+  int port;
+  if (creds == NULL) {
+    port = grpc_server_add_http2_port(server->wrapped_server,
+                                      *NanUtf8String(args[0]));
+  } else {
+    port = grpc_server_add_secure_http2_port(server->wrapped_server,
+                                             *NanUtf8String(args[0]),
+                                             creds);
+  }
+  NanReturnValue(NanNew<Number>(port));
 }
 
 NAN_METHOD(Server::Start) {
diff --git a/src/node/ext/server.h b/src/node/ext/server.h
index 5b4b18a0e0901c80c2c2c8d8cca3bafc2576c454..faab7e3418c649aa5e768fd9edcf329fa9ebf607 100644
--- a/src/node/ext/server.h
+++ b/src/node/ext/server.h
@@ -66,7 +66,6 @@ class Server : public ::node::ObjectWrap {
   static NAN_METHOD(New);
   static NAN_METHOD(RequestCall);
   static NAN_METHOD(AddHttp2Port);
-  static NAN_METHOD(AddSecureHttp2Port);
   static NAN_METHOD(Start);
   static NAN_METHOD(Shutdown);
   static NanCallback *constructor;
diff --git a/src/node/ext/server_credentials.cc b/src/node/ext/server_credentials.cc
index c4a93a6465dd6782a8be10e84addee25915cfb95..1b8e7b43fb2ea94c3723ae0cab34844a995ec7f9 100644
--- a/src/node/ext/server_credentials.cc
+++ b/src/node/ext/server_credentials.cc
@@ -73,6 +73,8 @@ void ServerCredentials::Init(Handle<Object> exports) {
   Handle<Function> ctr = tpl->GetFunction();
   ctr->Set(NanNew("createSsl"),
            NanNew<FunctionTemplate>(CreateSsl)->GetFunction());
+  ctr->Set(NanNew("createInsecure"),
+           NanNew<FunctionTemplate>(CreateInsecure)->GetFunction());
   constructor = new NanCallback(ctr);
   exports->Set(NanNew("ServerCredentials"), ctr);
 }
@@ -85,9 +87,6 @@ bool ServerCredentials::HasInstance(Handle<Value> val) {
 Handle<Value> ServerCredentials::WrapStruct(
     grpc_server_credentials *credentials) {
   NanEscapableScope();
-  if (credentials == NULL) {
-    return NanEscapeScope(NanNull());
-  }
   const int argc = 1;
   Handle<Value> argv[argc] = {
     NanNew<External>(reinterpret_cast<void *>(credentials))};
@@ -140,8 +139,17 @@ NAN_METHOD(ServerCredentials::CreateSsl) {
   key_cert_pair.cert_chain = ::node::Buffer::Data(args[2]);
   // TODO Add a force_client_auth parameter and pass it as the last parameter
   // here.
-  NanReturnValue(WrapStruct(
-      grpc_ssl_server_credentials_create(root_certs, &key_cert_pair, 1, 0)));
+  grpc_server_credentials *creds =
+      grpc_ssl_server_credentials_create(root_certs, &key_cert_pair, 1, 0);
+  if (creds == NULL) {
+    NanReturnNull();
+  }
+  NanReturnValue(WrapStruct(creds));
+}
+
+NAN_METHOD(ServerCredentials::CreateInsecure) {
+  NanScope();
+  NanReturnValue(WrapStruct(NULL));
 }
 
 }  // namespace node
diff --git a/src/node/ext/server_credentials.h b/src/node/ext/server_credentials.h
index 80747504a14c592e3e1e74098df7040703e274e5..63903f663c613c244bfb8bd791b8245d272d0ec5 100644
--- a/src/node/ext/server_credentials.h
+++ b/src/node/ext/server_credentials.h
@@ -63,6 +63,7 @@ class ServerCredentials : public ::node::ObjectWrap {
 
   static NAN_METHOD(New);
   static NAN_METHOD(CreateSsl);
+  static NAN_METHOD(CreateInsecure);
   static NanCallback *constructor;
   // Used for typechecking instances of this javascript class
   static v8::Persistent<v8::FunctionTemplate> fun_tpl;
diff --git a/src/node/interop/interop_server.js b/src/node/interop/interop_server.js
index 505c6bb5370825c54ad231b0e2f324e5881a1618..ece22cce31635a1029aeb4e44afe5bc7dea6cb23 100644
--- a/src/node/interop/interop_server.js
+++ b/src/node/interop/interop_server.js
@@ -161,7 +161,7 @@ function handleHalfDuplex(call) {
 function getServer(port, tls) {
   // TODO(mlumish): enable TLS functionality
   var options = {};
-  var server_creds = null;
+  var server_creds;
   if (tls) {
     var key_path = path.join(__dirname, '../test/data/server1.key');
     var pem_path = path.join(__dirname, '../test/data/server1.pem');
@@ -171,6 +171,8 @@ function getServer(port, tls) {
     server_creds = grpc.ServerCredentials.createSsl(null,
                                                     key_data,
                                                     pem_data);
+  } else {
+    server_creds = grpc.ServerCredentials.createInsecure();
   }
   var server = new grpc.Server(options);
   server.addProtoService(testProto.TestService.service, {
diff --git a/src/node/src/server.js b/src/node/src/server.js
index 9fbd1ee3bd5ed0159e8679dcf5669647c458248e..5c62f5990c701adb4e0fe8f26e1e253ddb618ac5 100644
--- a/src/node/src/server.js
+++ b/src/node/src/server.js
@@ -714,11 +714,7 @@ Server.prototype.bind = function(port, creds) {
   if (this.started) {
     throw new Error('Can\'t bind an already running server to an address');
   }
-  if (creds) {
-    return this._server.addSecureHttp2Port(port, creds);
-  } else {
-    return this._server.addHttp2Port(port);
-  }
+  return this._server.addHttp2Port(port, creds);
 };
 
 /**
diff --git a/src/node/test/call_test.js b/src/node/test/call_test.js
index c5edab8bcd48c7ae21491abb3e5c2c6dc442d353..48d859a8ece81db0fff51b4d2a8b8f7313cfa8b7 100644
--- a/src/node/test/call_test.js
+++ b/src/node/test/call_test.js
@@ -55,7 +55,8 @@ describe('call', function() {
   var server;
   before(function() {
     server = new grpc.Server();
-    var port = server.addHttp2Port('localhost:0');
+    var port = server.addHttp2Port('localhost:0',
+                                   grpc.ServerCredentials.createInsecure());
     server.start();
     channel = new grpc.Channel('localhost:' + port, insecureCreds);
   });
diff --git a/src/node/test/end_to_end_test.js b/src/node/test/end_to_end_test.js
index 9133ceca92f492c48211e1094a41cc0c121f6b5d..ea41dfc28cd49ae870e3591f3861d3db51f5ee81 100644
--- a/src/node/test/end_to_end_test.js
+++ b/src/node/test/end_to_end_test.js
@@ -64,7 +64,8 @@ describe('end-to-end', function() {
   var channel;
   before(function() {
     server = new grpc.Server();
-    var port_num = server.addHttp2Port('0.0.0.0:0');
+    var port_num = server.addHttp2Port('0.0.0.0:0',
+                                       grpc.ServerCredentials.createInsecure());
     server.start();
     channel = new grpc.Channel('localhost:' + port_num, insecureCreds);
   });
diff --git a/src/node/test/health_test.js b/src/node/test/health_test.js
index 93b068be31ad254a7bf4437476c130aa876c4b4b..be4ef1d251b547b5bd0a4f8a442976088831bc84 100644
--- a/src/node/test/health_test.js
+++ b/src/node/test/health_test.js
@@ -54,7 +54,8 @@ describe('Health Checking', function() {
                                new health.Implementation(statusMap));
   var healthClient;
   before(function() {
-    var port_num = healthServer.bind('0.0.0.0:0');
+    var port_num = healthServer.bind('0.0.0.0:0',
+                                     grpc.ServerCredentials.createInsecure());
     healthServer.start();
     healthClient = new health.Client('localhost:' + port_num,
                                      grpc.Credentials.createInsecure());
diff --git a/src/node/test/math_client_test.js b/src/node/test/math_client_test.js
index 1bd85ca495523d0face72e083adef1e84d8020ea..ef01870a4c1dd0e83f91911870b7a4136b59a2bf 100644
--- a/src/node/test/math_client_test.js
+++ b/src/node/test/math_client_test.js
@@ -51,7 +51,8 @@ var server = require('../examples/math_server.js');
 
 describe('Math client', function() {
   before(function(done) {
-    var port_num = server.bind('0.0.0.0:0');
+    var port_num = server.bind('0.0.0.0:0',
+                               grpc.ServerCredentials.createInsecure());
     server.start();
     math_client = new math.Math('localhost:' + port_num,
                                 grpc.Credentials.createInsecure());
diff --git a/src/node/test/server_test.js b/src/node/test/server_test.js
index 9c7bb465aa3dd613654e3e4b7f2fbf6dbdeaec0b..a9df43909e94f875971b718d41168a1284076b7d 100644
--- a/src/node/test/server_test.js
+++ b/src/node/test/server_test.js
@@ -59,16 +59,11 @@ describe('server', function() {
     it('should bind to an unused port', function() {
       var port;
       assert.doesNotThrow(function() {
-        port = server.addHttp2Port('0.0.0.0:0');
+        port = server.addHttp2Port('0.0.0.0:0',
+                                   grpc.ServerCredentials.createInsecure());
       });
       assert(port > 0);
     });
-  });
-  describe('addSecureHttp2Port', function() {
-    var server;
-    before(function() {
-      server = new grpc.Server();
-    });
     it('should bind to an unused port with ssl credentials', function() {
       var port;
       var key_path = path.join(__dirname, '../test/data/server1.key');
@@ -77,16 +72,22 @@ describe('server', function() {
       var pem_data = fs.readFileSync(pem_path);
       var creds = grpc.ServerCredentials.createSsl(null, key_data, pem_data);
       assert.doesNotThrow(function() {
-        port = server.addSecureHttp2Port('0.0.0.0:0', creds);
+        port = server.addHttp2Port('0.0.0.0:0', creds);
       });
       assert(port > 0);
     });
   });
+  describe('addSecureHttp2Port', function() {
+    var server;
+    before(function() {
+      server = new grpc.Server();
+    });
+  });
   describe('listen', function() {
     var server;
     before(function() {
       server = new grpc.Server();
-      server.addHttp2Port('0.0.0.0:0');
+      server.addHttp2Port('0.0.0.0:0', grpc.ServerCredentials.createInsecure());
     });
     after(function() {
       server.shutdown();
diff --git a/src/node/test/surface_test.js b/src/node/test/surface_test.js
index 18c99a5994301145b8a8bf9b70e606f40ea9b56d..dda2f8d12718ea56920e753f260e46dee15c88fe 100644
--- a/src/node/test/surface_test.js
+++ b/src/node/test/surface_test.js
@@ -47,6 +47,8 @@ var mathService = math_proto.lookup('math.Math');
 
 var _ = require('lodash');
 
+var server_insecure_creds = grpc.ServerCredentials.createInsecure();
+
 describe('File loader', function() {
   it('Should load a proto file by default', function() {
     assert.doesNotThrow(function() {
@@ -122,7 +124,7 @@ describe('Echo service', function() {
         callback(null, call.request);
       }
     });
-    var port = server.bind('localhost:0');
+    var port = server.bind('localhost:0', server_insecure_creds);
     var Client = surface_client.makeProtobufClientConstructor(echo_service);
     client = new Client('localhost:' + port, grpc.Credentials.createInsecure());
     server.start();
@@ -166,7 +168,7 @@ describe('Generic client and server', function() {
           callback(null, _.capitalize(call.request));
         }
       });
-      var port = server.bind('localhost:0');
+      var port = server.bind('localhost:0', server_insecure_creds);
       server.start();
       var Client = grpc.makeGenericClientConstructor(string_service_attrs);
       client = new Client('localhost:' + port,
@@ -215,7 +217,7 @@ describe('Echo metadata', function() {
         });
       }
     });
-    var port = server.bind('localhost:0');
+    var port = server.bind('localhost:0', server_insecure_creds);
     var Client = surface_client.makeProtobufClientConstructor(test_service);
     client = new Client('localhost:' + port, grpc.Credentials.createInsecure());
     server.start();
@@ -336,7 +338,7 @@ describe('Other conditions', function() {
         });
       }
     });
-    port = server.bind('localhost:0');
+    port = server.bind('localhost:0', server_insecure_creds);
     var Client = surface_client.makeProtobufClientConstructor(test_service);
     client = new Client('localhost:' + port, grpc.Credentials.createInsecure());
     server.start();
@@ -602,7 +604,7 @@ describe('Cancelling surface client', function() {
       'fib': function(stream) {},
       'sum': function(stream) {}
     });
-    var port = server.bind('localhost:0');
+    var port = server.bind('localhost:0', server_insecure_creds);
     var Client = surface_client.makeProtobufClientConstructor(mathService);
     client = new Client('localhost:' + port, grpc.Credentials.createInsecure());
     server.start();