define(function (require, exports, module) {
'use strict';
//
// OOP utilities
//

function inherit(inheritor, inherited) {
    inheritor.prototype = Object.create(inherited.prototype);
    inheritor.prototype.constructor = inheritor;
}

function implement(inheritor, inherited) {
    for(var f in inherited.prototype) {
        inheritor.prototype[f] = inherited.prototype[f];
    }
}

exports.inherit = inherit;
exports.implement = implement;
});

define(function (require, exports, module) {
'use strict';
//
// OOP utilities
//

function inherit(inheritor, inherited) {
    function F() {}
    F.prototype = inherited.prototype;
    inheritor.prototype = new F();
    inheritor.prototype.constructor = inheritor;
}

function implement(inheritor, inherited) {
    for(var f in inherited.prototype) {
        inheritor.prototype[f] = inherited.prototype[f];
    }
}

exports.inherit = inherit;
exports.implement = implement;
});

--- 
+++ 
@@ -5,9 +5,7 @@
 //
 
 function inherit(inheritor, inherited) {
-    function F() {}
-    F.prototype = inherited.prototype;
-    inheritor.prototype = new F();
+    inheritor.prototype = Object.create(inherited.prototype);
     inheritor.prototype.constructor = inheritor;
 }
 
Use Object.create rather than a fake constructor.
