Code cleanup, listeners seperated, command gets own class