add events

closes #13
closes #19