getInstalled returns an ObservableArray, that is given to the AppsController, and passed to the AppsList, which will based it's views off of. When this list changes, the AppsList will auomatically update accordingly. Every list returned from getInstalled also listens for oninstall and onuninstall events, and the list adds or removes apps based on the events. This, as well, means that the AppsList updates automatically as well.
When AppsList is empty, then Help message becomes visible, and Help message hides when AppsList is no longer empty.
Now it uses dependency injection, and isn't a singleton, so we can mock it in tests, and not worry about test pollution.