begin wrapping socket API