var _ = {};

_.modulo = function(a, b) {
    var c = a % b;
    return c >= 0 ? c : c + b;
}

_.enumerate = function(list) {
    if (!Array.isArray(list) && typeof list !== 'string')
        return Object.keys(list);

    return list
}

_.inOp = function(el, list) {
    if (!Array.isArray(list) && typeof list !== 'string')
        return el in list

    return list.indexOf(el) != -1
}

_.extends = function(child, parent) {
    for (var key in parent) {
        if ({}.hasOwnProperty.call(parent, key))
            child[key] = parent[key];
    }
    var ctor = function() {
        this.constructor = child;
        this.init = child;
    }
    ctor.prototype = parent.prototype;
    child.prototype = new ctor();
    child.__super__ = parent.prototype;
    return child;
}

@@ -428,230 +428,158 @@
     
-for (var key in parent
+var copy = function(
 ) %7B
+%7D
 %0A    
-    if (%7B%7D.hasOwnProperty.call(parent, key))%0A            child%5Bkey%5D = parent%5Bkey%5D;%0A    %7D%0A    var ctor = function() %7B%0A        this.constructor = child;%0A        this.init = child;%0A    %7D
+copy.prototype = parent.prototype;%0A    var c = new copy();%0A    c.constructor = child;%0A    child.prototype = c;%0A
 %0A    c
-tor
+hild
 .pro
@@ -576,32 +576,42 @@
  child.prototype
+.__super__
  = parent.protot
@@ -638,32 +638,8 @@
 type
- = new ctor();%0A    child
 .__s
@@ -636,32 +636,37 @@
 totype.__super__
+.init
  = parent.protot
@@ -664,24 +664,36 @@
 nt.prototype
+.constructor
 ;%0A    return

Fix super in _