updated to catch errors (calling non-function, arithmetic ops on a non-number