I don't think we should get rid of these functions; they're a useful implementation, and they're virtual so they can be overridden by derived classes.