public static function manipulate(Payload $payload, $callback)
    {
        self::assert_callable($callback);

        $payload->replaceData($callback($payload->extractTypeData()));

        return $payload;
    }