better handling of virtuals