allow conditions on public functions

standard lints disallow public inner functions, this makes the inner functions have inherited visibility.