optimize getfields on virtuals