# 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 = []
        @username, @password = username, password
        debug "Connecting to #{end_point}"

        add_headers(headers)
        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
        rescue RHC::Rest::ResourceNotFoundException => e
          raise ApiEndpointNotFound.new(
            "The OpenShift server is not responding correctly.  Check "\
            "that '#{end_point}' is the correct URL for your server. "\
            "The server may be offline or misconfigured.")
        end

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