Show how to handle a complete firmware update process with observers. Normally it's hard to implement a firmware update process because in some cases - the App needs to was for the UI (wait for a button press) - the UI needs to wait for the App (connecting or downloading) With observers these complex mechanisms can be implemented a simple and clean way.