implement projection function