begin a socket observable
add connect constructor
add cache and enumerate
make the SDL example main more readable