def METHOD_NAME(self, key):
    logger.debug("DataBus: Get value from key: [%s]", key)
    assert key in self._data
    item = self._data[key]
    if getattr(item, "get_value", None):
        # this could potentially generate a context switch, but as long the called method
        # does not "callback" the databus we should be fine
        value = item.METHOD_NAME()
        logger.debug("(K, V): (%s, %s)" % (key, value))
        return value
    elif hasattr(item, "__call__"):
        return item()
    else:
        # guaranteed to not generate context switch
        logger.debug("(K, V): (%s, %s)" % (key, item))
        return item