Use ActiveSupport::Concern to encapsulate pubsub logic