Almost done AST just needs to be tested and maybe cleaned