(If you have not rewritten this code yet) Factor out the common code in the if and else blocks -- they do the same thing except for how they set the expression argument.