internal function with underscore