diff --git a/README.md b/README.md
index 18d41ce8960573a992382519712137aeb762d517..63e73f9b89cbfaebd2c01d095fb14a9a74c29e5c 100755
--- a/README.md
+++ b/README.md
@@ -6,7 +6,11 @@ A scalable signaling server for WebRTC using socket.io, NodeJS cluster, and Redi
 
 SignalBuddy is an easy-to-scale signaling solution for WebRTC. SignalBuddy automatically detects and scales across the number of CPU cores in its environment. For instance, if the machine you're testing on has four cores, SignalBuddy will launch a cluster of four processes, each a separate instance of itself, all listening on the same port. Using Redis to store state, peers connected to different worker instances, even on different servers, will still be able to join the same rooms and broadcast data to one another.
 
-## Running
+## What is a signaling server?
+
+WebRTC needs to be facilitated with signaling; a service that acts as a matchmaker for peers before they establish direct video/audio/data channels. Signaling can be done in any way, e.g. via good old fashioned carrier pigeons. Signaling services only need to fulfill the absolute minimal role of matchmaking peers, however SignalBuddy
+
+## Startup Guide
 
 First, install and start Redis. Once Redis is listening on the default port (6379), `cd` into the signalbuddy project.
 
@@ -47,7 +51,7 @@ To run in production mode:
 NODE_ENV=production node dist/server.js
 ```
 
-Most likely, you'll want the server to be secure. You can either pass in the paths to your key/cert through the environment variables PRIV_KEY and CERT:
+Most likely, you'll want the server to be secured with SSL. You can either pass in the paths to your key/cert through the environment variables PRIV_KEY and CERT:
 
 ```
 NODE_ENV=production PRIV_KEY=/etc/example/privKey.pem CERT=/etc/example/cert.pem node dist/server.js
diff --git a/src/server.js b/src/server.js
index 30578b7d5c6793943de8cb92d9b8ac04d05a6096..129f1cba07af109d824e9a72973771df30d04829 100755
--- a/src/server.js
+++ b/src/server.js
@@ -43,7 +43,7 @@ if (cluster.isMaster) {
     worker.send('sticky-session:connection', connection);
   }).listen(port);
 
-  console.log(`Listening at ${config.server.secure ? 'https' : 'http'}://localhost:${port}/`);
+  console.log(`Listening at ${config.server.secure ? 'https' : 'http'}://${process.env.NODE_ENV === 'production' ? '0.0.0.0' : 'localhost'}:${port}/`);
 } else {
   const serverHandler = (req, res) => {
     if (req.url === '/healthcheck') {
diff --git a/src/sockets.js b/src/sockets.js
index 96fe00976d27d71b5352a0ac797732b0cbf31cb1..094bb2901cd5b00ea1fd4d5355aba2aabcc80815 100755
--- a/src/sockets.js
+++ b/src/sockets.js
@@ -26,6 +26,7 @@ export default (server, config) => {
     client.on('join', join);
     client.on('getClients', getClients);
     client.on('getClientCount', getClientCount);
+    client.on('getMyId', getClientId);
 
     function removeFeed(type) {
       if (client.room) {
@@ -78,6 +79,10 @@ export default (server, config) => {
         });
     }
 
+    function getClientId(callback) {
+      safeCb(callback)(client.id);
+    }
+
     // we don't want to pass "leave" directly because the
     // event type string of "socket end" gets passed too.
     client.on('disconnect', () => {