REALLY making events work

this will merge conflict with another branch, but they're both required.