refactor all printers