renamed homomorphism to morphism