public function initSystems(array $options): self
    {
        $appSystemList         = $this->obtainAppSystemList();
        $this->declaredOptions = $options;
        $this->runTasks        = new \BFW\RunTasks([], 'BfwApp');
        
        foreach ($appSystemList as $name => $className) {
            if ($name === 'ctrlRouterLink') {
                continue;
            }
            
            $this->initAppSystem($name, $className);
            
            if ($name === 'subjectList') {
                $this->getSubjectList()->addSubject(
                    $this->runTasks,
                    'ApplicationTasks'
                );
            }
        }
        
        foreach ($this->appSystemsFromMods as $name => $className) {
            $this->initAppSystem($name, $className);
        }
        
        //Because the appSystemList can be overrided
        if (array_key_exists('ctrlRouterLink', $appSystemList)) {
            $this->initAppSystem(
                'ctrlRouterLink',
                $appSystemList['ctrlRouterLink']
            );
        }
        
        $this->getMonolog()
            ->getLogger()
            ->debug('Framework initializing done.')
        ;
        
        return $this;
    }