Adding new method to Observable to unsubscribe all listeners. Refactored some of the other code to make this easier to understand.