Type safe impl for projections (first version)