Collapse PageEnvironment extensions into class
add ability to change page model in response to other events