Design an AbstractTopicProvider