more event logic - nearly there?