relax traverseM constraint