Information hiding remains one of the key principles within object-oriented paradigm that promotes abstracting away the inner workings of a software program.
[2] The application of this design principle requires looking into four different types of abstractions that could be applied to a service.
Further application of this design principle would result in a 'optimized contract' that maximizes the reuse potential of the service.
This extra information might result in service consumers being designed in a way that specifically targets that particular implementation, thereby developing consumer-to-implementation coupling.
The kind of information exposed in the service contract can lead to some security related concerns as well.
This could be addressed by the application of the message screening[4] and exception shielding[5] design patterns.