initial stab at virtuals, not utterly useless