Fleshed out th skeleton, not completely sure events are handled correctly...