refactor projection