logic and presentation separated