fixed up implementation of expression evaluation (needed to account for literals)