Large refactor into classes, simplified parsing, more uniform commands