abstracting all printing