# File lib/www/mechanize.rb, line 194
    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

      unless referer
        if url.to_s =~ /^http/
          referer = Page.new(nil, {'content-type'=>'text/html'})
        else
          referer = current_page || Page.new(nil, {'content-type'=>'text/html'})
        end
      end

      # 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

      # fetch the page
      page = fetch_page(  :uri      => url,
                          :referer  => referer,
                          :headers  => headers || {},
                          :params   => parameters
                       )
      add_to_history(page)
      yield page if block_given?
      page
    end