avoid shadowing locals