modify dispatch and generic traits