changed up the ast a whole bunch; not sure if it compiles.