uses exception handling to remove unreachable subscribers
uses single _ instead of __ for private functions