ScreenFactory. complete refactoring