public function reconfigure( array $settings = [] ): void
  {
    if($this->is_running) {
      throw new Exceptions\KernelAlreadyRunningException("You cannot reconfigure a running kernel.");
    }
    $this["settings"] = $settings;
    $this["config"] = $this->share(function($c) {
        $config =  new \Zend\Config\Config(include __DIR__ . DIRECTORY_SEPARATOR . "defaults.php");
        $config->merge(new \Zend\Config\Config($c["settings"]));
        return $config;
    });
    $this["space"] = $this->share(function($c) {
         $space_class = $c["config"]->default_objects->space;
        return new $space_class($c);
       });
    $this["alien"] = $this->share(function($c) {
      $alien_class = $c["config"]->default_objects->alien;
      return new $alien_class($c);
    });
    $this["gs"] = $this->share(function($c) {
        return new Graphsystem($c);
    });
    $this->is_configured = true;
  }