topic functionality moved to topicController