admittedly more source code, but half the runtime mainly just using message (not new) made possible by call sequence change