TODO: 1) Rework the app to handle tkinter UI nicely without blocking on the main thread, instead of handling things seperately from the main thread.
TODO: