This is thrown when the argument can't be matched so an ``ArgumentException`` may be more appropriate.

It's always helpful to include the list of valid values in the exception. 

Are all these uploaders in a namespace together? It might be cool to do away with the switch and use reflection to instantiate the class by name.