add ast traversals
experimental parents optimization code