first attempts to separe logic from presentation