I think we can use `SettingsListener` to make it more easy !!