it's probably better to pass the io.Writer directly to the callback
documentation & versioning strategy