def fetch_topic_module(topic_name)
      # FIXME: cyclomatic complexity
      Hypercuke.topics.validate(topic_name) do
        fail TopicNotDefinedError, "Topic not defined: #{topic_name}"
      end
      validate_topic_module \
        begin
          const_get( MiniInflector.camelize(topic_name) )
        rescue NameError => e
          raise Hypercuke::TopicNotDefinedError.wrap(e)
        end
    end
def fetch_topic_module(topic_name)
      # FIXME: cyclomatic complexity
      Hypercuke.topics.validate(topic_name) do
        fail TopicNotDefinedError, "Topic not defined: #{topic_name}"
      end
      validate_topic_module \
        begin
          const_get( MiniInflector.camelize(topic_name) )
        rescue NameError => e
          raise Hypercuke::TopicNotDefinedError.wrap(e)
        end
    end
BTW, I hate typing "self." in modules.
 We'll get to what makes a topic module special is in a moment, but
 here's how we fetch one: