clean up viewmodel script and added comments to UserPreferenceSettings.js to help explain what's going on (Marvin Gaye)