Refactor and add ability to check for event conflicts