var gcEmitter,
	gcstats = require('./build/Release/gcstats'),
	EventEmitter = require('events').EventEmitter;

function gcStats() {
	if (this instanceof gcStats){
        	throw Error('gc-stats no longer exports a constructor. Call without the `new` keyword');
   	}
	if(!gcEmitter) {
		gcEmitter = new EventEmitter();
		gcstats.afterGC(function(stats) {
			gcEmitter.emit('data', stats);
			gcEmitter.emit('stats', stats);
		});
	}
	return gcEmitter;
}

module.exports = gcStats;

var gcEmitter,
	util = require('util'),
	gcstats = require('./build/Release/gcstats'),
	EventEmitter = require('events').EventEmitter;

function GCStats() {
	if(!gcEmitter) {
		gcEmitter = new EventEmitter();
		gcstats.afterGC(function(stats) {
			gcEmitter.emit('data', stats);
		});
	}

	EventEmitter.call(this);

	gcEmitter.on('data', this.emit.bind(this, 'stats'));
}

util.inherits(GCStats, EventEmitter);

module.exports = GCStats;
--- 
+++ 
@@ -1,19 +1,21 @@
 var gcEmitter,
+	util = require('util'),
 	gcstats = require('./build/Release/gcstats'),
 	EventEmitter = require('events').EventEmitter;
 
-function gcStats() {
-	if (this instanceof gcStats){
-        	throw Error('gc-stats no longer exports a constructor. Call without the `new` keyword');
-   	}
+function GCStats() {
 	if(!gcEmitter) {
 		gcEmitter = new EventEmitter();
 		gcstats.afterGC(function(stats) {
 			gcEmitter.emit('data', stats);
-			gcEmitter.emit('stats', stats);
 		});
 	}
-	return gcEmitter;
+
+	EventEmitter.call(this);
+
+	gcEmitter.on('data', this.emit.bind(this, 'stats'));
 }
 
-module.exports = gcStats;
+util.inherits(GCStats, EventEmitter);
+
+module.exports = GCStats;
Replace constructor with singleton. Emit 'stats' on singleton
