shared-state mixin