Rewrote entire method to use recursion, evaluate symbols, blocks, and arguments.