you have closures to keep track of stuff for you between callbacks :D