(function() {
	'use strict';

	function definition() {
		var object                         = Object,
			objectCreate                   = object.create,
			objectGetOwnPropertyNames      = object.getOwnPropertyNames,
			objectGetOwnPropertyDescriptor = object.getOwnPropertyDescriptor;

		function ClassDescriptor(value, writable, configurable, enumerable) {
			return {
				__proto__:    null,
				value:        value,
				enumerable:   !!enumerable,
				configurable: !!configurable,
				writable:     !!writable
			};
		}

		object.defineProperty(Function.prototype, 'extends', new ClassDescriptor(function(parent) {
			var self       = this,
				prototype  = self.prototype,
				properties = {},
				names      = objectGetOwnPropertyNames(prototype),
				i = 0, property;

			parent = parent.prototype || parent;

			for(; (property = names[i]); i++) {
				properties[property] = objectGetOwnPropertyDescriptor(prototype, property);
			}

			properties.constructor = new ClassDescriptor(self);
			properties.parent      = new ClassDescriptor(parent);

			self.prototype = objectCreate(parent, properties);

			return self;
		}));

		return true;
	}

	provide(definition);
}());
@@ -774,49 +774,8 @@
 y;%0A%0A
-%09%09%09parent = parent.prototype %7C%7C parent;%0A%0A
 %09%09%09f
@@ -809,16 +809,16 @@
  i++) %7B%0A
+
 %09%09%09%09prop
@@ -894,17 +894,20 @@
 );%0A%09%09%09%7D%0A
+%09%09%09
 %0A
-
 %09%09%09prope
@@ -960,96 +960,66 @@
 %0A%09%09%09
-properties.parent      = new ClassDescriptor(parent);%0A%0A%09%09%09self.prototype = objectCreate(
+self.prototype         = objectCreate(parent.prototype %7C%7C 
 pare

remove unused leftover inheritance stuff