virtual procedures