final private static function getFactory($driver) {
        $key = array_search(strtolower($driver), array_map('strtolower', array_keys(self::$factories)));
        if($key === false) throw new DriverException('Driver not found');
        $factories = array_values(self::$factories);
        return $factories[$key];
    }