Added command support to dynamically execute commands like "exit"
Refactor printer logic into it's own class; Add nice error messages
Clean printer class