| 
					
				 | 
			
			
				@@ -362,52 +362,47 @@ define(['require', './brikz', './compatibility'], function (require, Brikz) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (typeof superclass == 'undefined' || superclass && superclass.isNil) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 console.warn('Compiling ' + className + ' as a subclass of `nil`. A dependency might be missing.'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            return rawAddClass(pkgName, className, superclass, iVarNames, null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return rawAddClass(pkgName, "class", {className: className, superclass: superclass, iVarNames: iVarNames}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        var classFactories = this.classFactories = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            "class": klass 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         st.addTrait = function (className, pkgName) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            return rawAddClass(pkgName, className, "trait"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return rawAddClass(pkgName, "trait", {className: className}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        classFactories.trait = trait; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        function rawAddClass (pkgName, className, superclass, iVarNames, fn) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            var pkg = st.packages[pkgName]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        function rawAddClass (pkgName, type, spec) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            spec.pkg = st.packages[pkgName]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (!pkg) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (!spec.pkg) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 throw new Error("Missing package " + pkgName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            var isTrait = superclass === "trait"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (isTrait || superclass == null || superclass.isNil) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                superclass = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (spec.superclass == null || spec.superclass.isNil) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                spec.superclass = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            var theClass = globals.hasOwnProperty(className) && globals[className]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (theClass && theClass.superclass == superclass && !fn) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if (iVarNames) theClass.iVarNames = iVarNames; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if (pkg) theClass.pkg = pkg; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            var theClass = globals.hasOwnProperty(spec.className) && globals[spec.className]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (theClass && theClass.superclass == spec.superclass && !spec.fn) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (spec.iVarNames) theClass.iVarNames = spec.iVarNames; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (spec.pkg) theClass.pkg = spec.pkg; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 if (theClass) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    iVarNames = iVarNames || theClass.iVarNames; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    spec.iVarNames = spec.iVarNames || theClass.iVarNames; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     st.removeClass(theClass); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                theClass = globals[className] = isTrait ? trait({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    className: className, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    pkg: pkg 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                }) : klass({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    className: className, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    superclass: superclass, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    pkg: pkg, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    iVarNames: iVarNames, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    fn: fn 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                theClass = globals[spec.className] = classFactories[type](spec); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 addSubclass(theClass); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             classes.addElement(theClass); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            addOrganizationElement(pkg, theClass); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (!isTrait && st._classAdded) st._classAdded(theClass); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (isTrait && st._traitAdded) st._traitAdded(theClass); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            addOrganizationElement(spec.pkg, theClass); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (!theClass.trait && st._classAdded) st._classAdded(theClass); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (theClass.trait && st._traitAdded) st._traitAdded(theClass); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             return theClass; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -434,7 +429,7 @@ define(['require', './brikz', './compatibility'], function (require, Brikz) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				          and add it to the system.*/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         this.addCoupledClass = function (className, superclass, pkgName, fn) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            return rawAddClass(pkgName, className, superclass, null, fn); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return rawAddClass(pkgName, "class", {className: className, superclass: superclass, fn: fn}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         /* Create an alias for an existing class */ 
			 |