new user interface, app state is saved to localStorage