added the definition for morphism