why :write here and :save_output above?  I think :save_output might be legacy, but if so, just have it call write, no? Lots of duplication, maybe can modify via super and a subclass? Ok to do later