figured out the whole nonblocking thing