Refactored to be event driven - tests probably broken