add virtuals