First pass at attempting to refactor to command design pattern