Refactored the model to be aligned with spec