gen_io will be an erlang behaviour combining gen_server with improved side effect handling.