mark all methods as virtual