We have an application which invokes a third party web service and there is a significant amount of work to generate the request (it's a fairly large object tree and there are 30-40 unique contract schema generated classes to potentially instantiate) based upon the class structure used on our side of the invocation. I had a thought of defining the service contract based upon the class structure as we work it and use a custom WCF interception class to transform it when invoking the third party service. This isolates the code that builds the request for the third party and permits stuff like mocking the service based upon our classes, not theirs. Thoughts?