move projection into separate library