add screen implementation and tests