Adding Socket Abstraction