cleaned up ProjectionScan and added tests