add a walker for G, P and M