UI control and saveState/loadState