Optimisation and correctness.

Previously:
- The events were copied *twice* for every native call.
- The events were never actually going to be read, since mutation was done on a copy.

Now:
- The events are never copied.
- Mutation is done on the actual heap-allocated events object.

Also: Added using declaration so we don't need to type as much.