diff --git a/src/node/binding.gyp b/src/node/binding.gyp
index fe4b5da9c8fd23ca8b29eed39fb4442cebcc217b..cf2a6acb04f01537be8e6c5180f447d2591d1262 100644
--- a/src/node/binding.gyp
+++ b/src/node/binding.gyp
@@ -28,17 +28,17 @@
       },
       "target_name": "grpc",
       "sources": [
-        "byte_buffer.cc",
-        "call.cc",
-        "channel.cc",
-        "completion_queue_async_worker.cc",
-        "credentials.cc",
-        "event.cc",
-        "node_grpc.cc",
-        "server.cc",
-        "server_credentials.cc",
-        "tag.cc",
-        "timeval.cc"
+        "ext/byte_buffer.cc",
+        "ext/call.cc",
+        "ext/channel.cc",
+        "ext/completion_queue_async_worker.cc",
+        "ext/credentials.cc",
+        "ext/event.cc",
+        "ext/node_grpc.cc",
+        "ext/server.cc",
+        "ext/server_credentials.cc",
+        "ext/tag.cc",
+        "ext/timeval.cc"
       ],
       'conditions' : [
         ['no_install=="yes"', {
diff --git a/src/node/index.js b/src/node/index.js
index 751c3525d37c91d3d36ef4fedd2f76e80328e59d..0627e7f5576efb6c121a699a125612e17a932c21 100644
--- a/src/node/index.js
+++ b/src/node/index.js
@@ -35,9 +35,9 @@ var _ = require('underscore');
 
 var ProtoBuf = require('protobufjs');
 
-var surface_client = require('./surface_client.js');
+var surface_client = require('./src/surface_client.js');
 
-var surface_server = require('./surface_server.js');
+var surface_server = require('./src/surface_server.js');
 
 var grpc = require('bindings')('grpc');
 
diff --git a/src/node/package.json b/src/node/package.json
index 5f3c6fa3455d29719fae7f212457531bbe95641b..8a0b51dda8e824ddaa05d3e981bf2d1dc5732ad8 100644
--- a/src/node/package.json
+++ b/src/node/package.json
@@ -17,5 +17,5 @@
     "mocha": "~1.21.0",
     "minimist": "^1.1.0"
   },
-  "main": "main.js"
+  "main": "index.js"
 }
diff --git a/src/node/test/client_server_test.js b/src/node/test/client_server_test.js
index 11cc511dc94e804bafce64fd7343a70deb878a3c..d657ef41a463fbc278d010785864163892bf497a 100644
--- a/src/node/test/client_server_test.js
+++ b/src/node/test/client_server_test.js
@@ -35,9 +35,9 @@ var assert = require('assert');
 var fs = require('fs');
 var path = require('path');
 var grpc = require('bindings')('grpc.node');
-var Server = require('../server');
-var client = require('../client');
-var common = require('../common');
+var Server = require('../src/server');
+var client = require('../src/client');
+var common = require('../src/common');
 var _ = require('highland');
 
 var ca_path = path.join(__dirname, 'data/ca.pem');
diff --git a/src/node/test/server_test.js b/src/node/test/server_test.js
index d0ec1555c6dd946d607e4753ea445bc50612ec81..5fad9a5564e87179bc63192c45a4d6a4b3c22777 100644
--- a/src/node/test/server_test.js
+++ b/src/node/test/server_test.js
@@ -33,7 +33,7 @@
 
 var assert = require('assert');
 var grpc = require('bindings')('grpc.node');
-var Server = require('../server');
+var Server = require('../src/server');
 
 /**
  * This is used for testing functions with multiple asynchronous calls that
diff --git a/src/node/test/surface_test.js b/src/node/test/surface_test.js
index 16e4869d83e58b86252b75c2c931cc85ba69376c..85f4841d4bc394882c5e6a9790a16910dfe1d11e 100644
--- a/src/node/test/surface_test.js
+++ b/src/node/test/surface_test.js
@@ -33,9 +33,9 @@
 
 var assert = require('assert');
 
-var surface_server = require('../surface_server.js');
+var surface_server = require('../src/surface_server.js');
 
-var surface_client = require('../surface_client.js');
+var surface_client = require('../src/surface_client.js');
 
 var ProtoBuf = require('protobufjs');