revised Window::render() into abstract algorithm