override instead of virtual?