fixed some bugs; cleaned up and streamlined code. works fine for + - expressions