I was considering this at first but thought it would be a little harder maintaining backwards compatibility that way. At first I just created a Configuration class that had a soap_config module that was a hash and readers/writers for the hash with validation on the allowed keys.

But enough of that! Would something like below be suitable?

```ruby
# wash_out/soap_config.rb
class SoapConfig
   # create reader/writer inside this class instead of the controller
   def initialize(options = {})
     # validate options and yield a list of allowed keys unless one is wrong
     # set necessary instance variables (should be no need for class variables anymore)
   end
end
```

```ruby
ActionController::Base.class_eval do

  # Define a SOAP service. The function has no required +options+:
  # but allow any of :parser, :namespace, :wsdl_style, :snakecase_input,
  # :camelize_wsdl, :wsse_username, :wsse_password and :catch_xml_errors.
  #
  # Any of the the params provided allows for overriding the defaults
  # (like supporting multiple namespaces instead of application wide such)
  #
  def self.soap_service(options={})
    include WashOut::SOAP
    self.soap_config = SoapConfig.new(options)
  end
end
````

```ruby
# app/controllers/some_controller.rb
class SomeController < ActionController::Base

   soap_service namespace: 'my-cool-namespace'

   soap_action :test, args: { }, returns: nil
   def test
     render soap: nil
   end
end
```

What do you think? I actually really like that approach.