make function protected so we can extend it