WIP: ast

implement ::assign
clean-up