First pass at DenormalizeOnSaveMixin mixin