Fixed the lifetimes to be correct. Added a marker type for Socket