refactored SettingsDialog