add function dereference
add function traverse