Events and callbacks

#15 w/ test