1. Added support for if function
2. Now every expression is bound to a variable that's later used.

still need to do cleanup