add `nodeMoved` callback