support 2-argument if syntax
bugfix: define can take only 1 argument
cleanup