halfway through development a publish/subscribe mixin