@xiangli-cmu Why is the argument an `interface{}` instead of a `*Node`?