implement screen and controller logic