almost finished publish/subscribe mixin