[WIP] make ASTs cachable

Using named arguments is nice, but it is slower than using positional args. Please change to positional.