Make these functions virtual so they can be overridden in a subclass