Why do we need a writer on the terminal package? I think it would be better to keep those function as simplistic as possible and let the caller deal with output.