First 1:1 version of the abstract syntax. Various cleanups.