adding EndPoint and Transport abstractions