may need to override, cannot be private