Address Kay's and Patrick's comments

The biggest changes include - synchronizing all methods of listeners used by
the UI, refactor the StorageStatusListener such that listeners no longer extend
it, and move the StorageStatusListener to storage.
Imports, comments, and code formatting (minor)