CommandHandler should probably be an abstract class