def []=(type, caller)
      type = to_key(type)

      if type?(type)
        raise(Errors::TypeExistsError, "type '#{type}' already exists")
      end

      @callers[type] = caller
    end
def []=(type, caller)
      type = to_key(type)

      if type?(type)
        raise(Errors::TypeExistsError, "type '#{type}' already exists")
      end

      @callers[type] = caller
    end
Register a caller
 @param [Symbol, String] type the name of the type
 @param [#call] caller that responds to #call
 @return [Object] returns the caller
 @raise [TypeExistsError] if type is already registered