refactor BasePreferences & BasePreferencesList class