The first idea that comes to mind when implementing this is to create separate service for each type of multimedia unit. But we can abstract this and transform it into a single service with generic **data** types. The ISendService<T> interface, where T is a service type, from Figure 7 shows us how the abstraction was realized. The generic parameter T represents the Service type. The Service Type is nothing more than then service contracts exposed by the web-services that the peer hosts. The T parameter is used by the implementation of the ISendService<T> to establish the type cast of the ChannelFactory and when the Initialize method is called, the peer endpoint is known and a channel can be open between the two peers so that the streaming can begin.