create separate socket classes