projection implementation 2nd