public static function map($callbacks, $arr, $keys = null)
    {
        foreach ($arr as $key => $val) {
            if (is_array($val)) {
                $arr[ $key ] = static::map($callbacks, $arr[ $key ]);
            } elseif (! is_array($keys) or in_array($key, $keys)) {
                if (is_array($callbacks)) {
                    foreach ($callbacks as $callback) {
                        $arr[ $key ] = call_user_func($callback, $arr[ $key ]);
                    }
                } else {
                    $arr[ $key ] = call_user_func($callbacks, $arr[ $key ]);
                }
            }
        }

        return $arr;
    }