refact ast (almost all operations)
refact ast (almost all operations)