enh, preserve ast structure