use variadic templates to rewrite msgpack