Functions that need to be overwritten should usually be private to discourage users from calling them directly.