Event Delegation

This should allow me to merge this pull request into a branch, so I can then update it with the features from master.