add comments, refactor to use less indenting in code, started work on eval()