# File lib/www/mechanize.rb, line 181
    def get(options, parameters = [], referer = nil)
      unless options.is_a? Hash
        url = options
        unless parameters.respond_to?(:each) # FIXME: Remove this in 0.8.0
          referer = parameters
          parameters = []
        end
      else
        raise ArgumentError.new("url must be specified") unless url = options[:url]
        parameters = options[:params] || []
        referer = options[:referer]
        headers = options[:headers]
      end

      referer ||= current_page || Page.new(nil, {'content-type'=>'text/html'})

      # FIXME: Huge hack so that using a URI as a referer works.  I need to
      # refactor everything to pass around URIs but still support
      # WWW::Mechanize::Page#base
      unless referer.is_a?(WWW::Mechanize::File)
        referer = referer.is_a?(String) ?
          Page.new(URI.parse(referer), {'content-type' => 'text/html'}) :
          Page.new(referer, {'content-type' => 'text/html'})
      end
      abs_uri = to_absolute_uri(url, referer)

      if parameters.length > 0
        abs_uri.query ||= ''
        abs_uri.query << '&' if abs_uri.query.length > 0
        abs_uri.query << self.class.build_query_string(parameters)
      end

      # fetch the page
      request = fetch_request(abs_uri)
      page = fetch_page(:uri => abs_uri, :request => request, :page => referer, :headers => headers)
      add_to_history(page)
      yield page if block_given?
      page
    end