there is a mix of public and package private visibility here