refactor MapView to use the model instead of interfaces