def scheme(name)
      scheme = schemes.select {|t| t.name == name.to_s}.first
      raise "No such scheme #{name}, available schemes are #{schemes.map {|t| t.name}.join(', ')}" if scheme.nil?
      yield scheme if block_given?
      scheme
    end
def scheme(name)
      scheme = schemes.select {|t| t.name == name.to_s}.first
      raise "No such scheme #{name}, available schemes are #{schemes.map {|t| t.name}.join(', ')}" if scheme.nil?
      yield scheme if block_given?
      scheme
    end
Return the scheme with the specified name. Raises an error if no schemes
 match the specified name.

 @note if two schemes match names, the first matching scheme is returned.

 @param [String] name of the specific scheme
 @return [Scheme] the specific scheme that matches the name specified