Split projection helper into separate class