def add_source!(source)
      # handle yaml file paths
      source = (Sources::YAMLSource.new(source)) if source.is_a?(String) || source.is_a?(Pathname)
      source = (Sources::HashSource.new(source)) if source.is_a?(Hash)