condense globals
introduce flags
sensible silence and stepping