Adding Projection and Refactoring