added virtuals to models and tests