|  | @@ -111,6 +111,8 @@ function RootBrik(brikz, st) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	this.nil = new SmalltalkNil();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +	this.rootAsClass = {fn: SmalltalkRoot};
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  	this.__init__ = function () {
 | 
	
		
			
				|  |  |  		st.addPackage("Kernel-Objects");
 | 
	
		
			
				|  |  |  		st.addPackage("Kernel-Infrastructure");
 | 
	
	
		
			
				|  | @@ -166,6 +168,7 @@ function DNUBrik(brikz, st) {
 | 
	
		
			
				|  |  |  	brikz.ensure("selectorConversion");
 | 
	
		
			
				|  |  |  	brikz.ensure("messageSend");
 | 
	
		
			
				|  |  |  	var manip = brikz.ensure("manipulation");
 | 
	
		
			
				|  |  | +	var rootAsClass = brikz.ensure("root").rootAsClass;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	/* Method not implemented handlers */
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -182,7 +185,7 @@ function DNUBrik(brikz, st) {
 | 
	
		
			
				|  |  |  		checker[selector] = true;
 | 
	
		
			
				|  |  |  		var method = {jsSelector: selector, fn: createHandler(selector)};
 | 
	
		
			
				|  |  |  		methods.push(method);
 | 
	
		
			
				|  |  | -		manip.installMethod(method, {fn: SmalltalkRoot});
 | 
	
		
			
				|  |  | +		manip.installMethod(method, rootAsClass);
 | 
	
		
			
				|  |  |  		return method;
 | 
	
		
			
				|  |  |  	};
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -296,7 +299,10 @@ function ManipulationBrik(brikz, st) {
 | 
	
		
			
				|  |  |  function ClassesBrik(brikz, st) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	var org = brikz.ensure("organize");
 | 
	
		
			
				|  |  | -	var nil = brikz.ensure("root").nil;
 | 
	
		
			
				|  |  | +	var root = brikz.ensure("root");
 | 
	
		
			
				|  |  | +	var nil = root.nil;
 | 
	
		
			
				|  |  | +	var rootAsClass = root.rootAsClass;
 | 
	
		
			
				|  |  | +	rootAsClass.klass = {fn: SmalltalkClass};
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	function SmalltalkPackage() {}
 | 
	
		
			
				|  |  |  	function SmalltalkBehavior() {}
 | 
	
	
		
			
				|  | @@ -310,15 +316,13 @@ function ClassesBrik(brikz, st) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	SmalltalkMetaclass.prototype.meta = true;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -	var nilKlass;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |  	this.__init__ = function () {
 | 
	
		
			
				|  |  |  		st.addPackage("Kernel-Classes");
 | 
	
		
			
				|  |  |  		st.wrapClassName("Behavior", "Kernel-Classes", SmalltalkBehavior, st.Object, false);
 | 
	
		
			
				|  |  |  		st.wrapClassName("Metaclass", "Kernel-Classes", SmalltalkMetaclass, st.Behavior, false);
 | 
	
		
			
				|  |  |  		st.wrapClassName("Class", "Kernel-Classes", SmalltalkClass, st.Behavior, false);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -		st.Object.klass.superclass = nilKlass = st.Class;
 | 
	
		
			
				|  |  | +		st.Object.klass.superclass = rootAsClass.klass = st.Class;
 | 
	
		
			
				|  |  |  		addSubclass(st.Object.klass);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  		st.wrapClassName("Package", "Kernel-Infrastructure", SmalltalkPackage, st.Object, false);
 | 
	
	
		
			
				|  | @@ -350,14 +354,17 @@ function ClassesBrik(brikz, st) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	function klass(spec) {
 | 
	
		
			
				|  |  |  		spec = spec || {};
 | 
	
		
			
				|  |  | +		var setSuperClass = spec.superclass;
 | 
	
		
			
				|  |  | +		if(!spec.superclass) {
 | 
	
		
			
				|  |  | +			spec.superclass = rootAsClass;
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  		var meta = metaclass(spec);
 | 
	
		
			
				|  |  |  		var that = meta.instanceClass;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -		if(spec.superclass) {
 | 
	
		
			
				|  |  | -			that.superclass = spec.superclass;
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | +		that.superclass = setSuperClass;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -		that.fn = spec.fn || inherits(function () {}, spec.superclass ? spec.superclass.fn : SmalltalkRoot);
 | 
	
		
			
				|  |  | +		that.fn = spec.fn || inherits(function () {}, spec.superclass.fn);
 | 
	
		
			
				|  |  |  		that.subclasses = [];
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  		setupClass(that, spec);
 | 
	
	
		
			
				|  | @@ -365,14 +372,14 @@ function ClassesBrik(brikz, st) {
 | 
	
		
			
				|  |  |  		that.className = spec.className;
 | 
	
		
			
				|  |  |  		that.wrapped   = spec.wrapped || false;
 | 
	
		
			
				|  |  |  		meta.className = spec.className + ' class';
 | 
	
		
			
				|  |  | -		meta.superclass = spec.superclass ? spec.superclass.klass : nilKlass;
 | 
	
		
			
				|  |  | +		meta.superclass = spec.superclass.klass;
 | 
	
		
			
				|  |  |  		return that;
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	function metaclass(spec) {
 | 
	
		
			
				|  |  |  		spec = spec || {};
 | 
	
		
			
				|  |  |  		var that = new SmalltalkMetaclass();
 | 
	
		
			
				|  |  | -		that.fn = inherits(function () {}, spec.superclass ? spec.superclass.klass.fn : SmalltalkClass);
 | 
	
		
			
				|  |  | +		that.fn = inherits(function () {}, spec.superclass.klass.fn);
 | 
	
		
			
				|  |  |  		that.instanceClass = new that.fn();
 | 
	
		
			
				|  |  |  		setupClass(that);
 | 
	
		
			
				|  |  |  		return that;
 |