Added event mixin so listeners get auto-destroyed on unmounting