Separated model and display logic