(feat) add ast functions