wip: macro does something now
wip: I think I need to rewrite pack()/unpack()