public static function extend($destination, $sources)
    {
        $sources = array_slice(func_get_args(), 1);

        static::each($sources, function ($source) use (& $destination) {
            static::each($source, function ($value, $name) use (& $destination) {
                static::set($destination, $name, $value);
            });
        });

        return $destination;
    }