fix nyi, split out result handling
give the do primitive functions better names
make the struct functions stop using W_SimplePrim

write a new decorator that simplifies that task