re-arrange printer implementations