implement most of the topic operations, take a break