code: function (parent,config,modulePath,npmPath,classesSource)
  	{
  		this.e.log&&this.e.log('Constructing new `'+this.className+'`...','system');
  
  		if (modulePath==undefined)
  			modulePath = cwd;
  
  		try {
  			this.setParent(parent);
  		} catch (e)
  		{
  			if (e)
  				console.log(this);
  		}
  
  		this.setModulePath(path.resolve(path.resolve(parent.modulePath,modulePath))+'/');
  
  		this.preinit.apply(this,arguments); 
  
  		this.npmPath = npmPath || [];
  		this.importClasses(classesSource);
  
  		var defaultConfig = cwd+sourcePath+'config/'+className.split('_')[0]+'Config.json';
  		if (fs.existsSync(defaultConfig))
  			this.configureFromFile(defaultConfig);
  		if (fs.existsSync(this.modulePath + this.configFile))
  			this.configureFromFile(this.modulePath + this.configFile);
  		if (config)
  			this.setConfig(config);
  
  		_debug = this.getConfig('debug')===true;
  
  		this.importPackages();
  		this.importFromConfig();
  
  		Object.defineProperty(this,'c',{ value: this.getComponent('classBuilder').classes, enumerable:false, writable: false });
  		this.c.module = self;
  
  		this.preloadEvents();
  		this.preloadComponents();
  
  		this.setEvents({ 'ready': {} });
  		var ready=this.getEvent('ready');
  		ready.once(function (e) {
  			self.startComponents();
  			self.prepareModels();
  			self.prepareScripts();
  
  			self.init.apply(self,arguments);
  			self.run.apply(self,arguments);
  			_initialized=true;
  		});
  	}
docs: Constructor
  @param object $parent parent object.
  @param object $config configuration object.