added abstract socket/server class