Refactor. Data and behavior are separated in the model