This isn't thread safe, if that ok? Should it only be accessed from the UI thread?