deal with shadowed argument variables in functions