public function setModule($name, $module=null)
	{
	    if (!$module) {
	        $module = $name;
	    }
	    
	    if ($module instanceof Module) {
	        $name  = $module->getName();
	        $alias = $module->alias;
	    } else {
	        if (is_string($module)) {
	            $module = ['basePath' => $module];
	        } elseif (is_array($module)) {
	            if (!isset($module['basePath'])) {
	                $module['basePath'] = $name;
	            }
	        } else {
	            throw new InvalidArgumentException('modules config must be array.');
	        }
	        
	        if (strpos($module['basePath'], $this->basePath) === false) {
	            $module['basePath'] = rtrim($this->basePath, '/\\') . '/' . trim($module['basePath'], '/\\') . '/';
	        }
	        $module['class'] = '\\Wslim\\Common\\Module';
	        
	        if (is_numeric($name)) {
	            $name = str_replace($this->basePath, '', $module['basePath']);
	        }
	        $name = trim($name, '\\/');
	        $module['name'] = $name;
	        $alias = isset($module['alias']) ? $module['alias'] : null;
	    }
	    
		if (!isset($this->_modules)) {
		    $this->_modules = [];
		}
		
		if ($alias) {
		    $this->_moduleAliases[$alias] = $name;
		}
		
		if (!in_array($name, $this->_modules)) {
		    array_push($this->_modules, $name);
		    $uid = 'module.' . $name;
            $this->set($uid, $module);
		}
		
		return $this;
	}