I had a look at the rest of implementation, but think it will be modified if you make events list a part of existing application data structure (see comment above), so I did not leave comments there.