Refactored to use generic remote events as well as added a 'service not available' state