[WIP] change types of ASTs from class to struct, with const reference instead of shared_ptr