don't hide calldata structure, no reason to, and forced an unnecessary allocation which is bad