Do some of the saving of the system config and module config in a background thread. Most of time this is just synchronizing the in memory state to disk, but the user has to sit and wait for that to occur. This frees the UI and user to do more productive stuff. Does not ease the pain of reloading the config on most cancel operations. That is a bigger nut to crack on another day.