codegen WIP
better codegen still