changed connection pool to a channel pool.
refactored protocol to be bound to a specific connection and introduced an IProtocolFactory.