defined take! implies input, put! implies output. If everything is io, maybe this is better.
defined take! implies input, put! implies output.
If everything is io, maybe this is better.