first pass at events and also some ugly-hacks to test events