add traversal hoooks