dont write argument name on prototype
suppress duplicate definition warnings, variables are hoisted
support 'else' syntax in cond