demos
socket abstraction