socket OO