Resolves #3: Implementing the Event API with docs and tests