refactor for projection