Formal disposable protocol
much better i/o