modeldiff mixin