started writing asynchronous networking code. the asynchronous stuff is way more complicated than i thought