I think it would make sense for this to live in storage/ (and as mentioned elsewhere, not have other UI listeners inherit from this one)