refactor to support multiple mvp projections