Refactor some shared model logic into SharedModelLogic mixin