switching to pub-sub