fixed some bugs, added show_func to display unevaluated expressions