# File lib/rhc/rest/client.rb, line 19
      def initialize(end_point, username, password, use_debug=false, preferred_api_versions = CLIENT_API_VERSIONS)
        @debug = use_debug
        @end_point = end_point
        @server_api_versions = []
        debug "Connecting to #{end_point}"

        credentials = nil
        userpass = "#{username}:#{password}"
        # :nocov: version dependent code
        if RUBY_VERSION.to_f == 1.8
          credentials = Base64.encode64(userpass).delete("\n")
        else
          credentials = Base64.strict_encode64(userpass)
        end
        # :nocov:
        @@headers["Authorization"] = "Basic #{credentials}"
        @@headers["User-Agent"] = RHC::Helpers.user_agent rescue nil
        RestClient.proxy = URI.parse(ENV['http_proxy']).to_s if ENV['http_proxy']

        # API version negotiation
        begin
          debug "Client supports API versions #{preferred_api_versions.join(', ')}"
          @client_api_versions = preferred_api_versions
          default_request = new_request(:url => @end_point, :method => :get, :headers => @@headers)
          @server_api_versions, links = api_info(default_request)
          debug "Server supports API versions #{@server_api_versions.join(', ')}"

          if api_version_negotiated
            unless server_api_version_current?
              debug "Client API version #{api_version_negotiated} is not current. Refetching API"
              # need to re-fetch API
              @@headers["Accept"] = "application/json; version=#{api_version_negotiated}"
              req = new_request(:url => @end_point, :method => :get, :headers => @@headers)
              @server_api_versions, links = api_info req
            end
          else
            warn_about_api_versions
          end
        end

        super({:links => links}, use_debug)
      end