Refactored surface to split out InputManager.