I like this refactor..

optional viewManger seems awkward though.. not apparent what that is needed for,  maybe we can pass in existing view object if it exists instead?