public static function setFactory(DriverFactory $factory = null)
    {
        if (self::$level > 0) {
            throw new \RuntimeException("Setting a new factory while running isn't allowed!");
        }

        self::$factory = $factory;

        // reset it here, it will be actually instantiated inside execute() or get()
        self::$driver = null;
    }