added big chunks of parser and ast