# File lib/aws/core/configuration.rb, line 346
        def add_service name, ruby_name, default_endpoint

          add_option "#{ruby_name}_endpoint""#{ruby_name}_endpoint", default_endpoint

          add_option("#{ruby_name}_port""#{ruby_name}_port") do |config,value|
            value || (config.use_ssl? ? 443 : 80)
          end

          # users only need to specify service regions when they use
          # a test endpoint with a sigv4 service
          add_option("#{ruby_name}_region""#{ruby_name}_region") do |config,value|
            value || begin
              endpoint = config.send("#{ruby_name}_endpoint")
              if endpoint =~ /us-gov/
                if matches = endpoint.match(/(us-gov-west-\d+)/)
                  matches[1]
                else
                  'us-gov-west-1' # e.g. iam.us-gov.amazonaws.com
                end
              elsif matches = endpoint.match(/^.+\.(.+)\.amazonaws.com$/)
                matches[1] 
              else
                'us-east-1'
              end
            end
          end

          needs = [
            :signer, 
            :http_handler, 
            "#{ruby_name}_endpoint""#{ruby_name}_endpoint",
            "#{ruby_name}_port""#{ruby_name}_port",
            :max_retries,
            :stub_requests?,
            :proxy_uri,
            :use_ssl?,
            :ssl_verify_peer?,
            :ssl_ca_file,
            :user_agent_prefix,
            :logger,
            :log_formatter,
            :log_level,
          ]

          create_block = lambda do |config| 
            AWS.const_get(name)::Client.new(:config => config)
          end

          add_option_with_needs "#{ruby_name}_client""#{ruby_name}_client", needs, &create_block

        end