generalized some projection transformations a bit more