copy args on load()/dump()

returning refereces leads to unintuitive behavior
a few bug fixes to get tests passing