Move more logic to Manager as it made sense and add full test coverage.