AsyncSocket abstracted out from demo
layering docu