See #6. Added events. Completed Unit Tests.