refactor with (un)packfloat