[WIP] make ASTs cachable