refactored bots to allow for more fine-grained control over events