Find bound/free variables
Add forward/backward traversal flag
merged graph node addition and edge connection into one method