use ast gem for ast nodes