redesign ast interfaces