public function onConfigUpdate(FlexiFormConfig $config, DataObject $flexi)
 {
     $fields = $flexi->FlexiFormFields();
     $requested_groups = (array) Controller::curr()->getRequest()->requestVar('FlexiFormMailChimpGroups');
     $current_groups = array();
     // remove non requested groups from field list
     foreach ($fields as $field) {
         if ($field->is_a('FlexiMailChimpInterestGroupField')) {
             if (in_array($field->InterestGroupID, $requested_groups)) {
                 $current_groups[] = $field->InterestGroupID;
             } else {
                 $fields->remove($field);
                 $field->delete();
             }
         }
     }
     // calculate groups that need to be added to field list
     $new_groups = array_diff($requested_groups, $current_groups);
     if (!empty($new_groups)) {
         $client = new FlexiFormMailChimpClient($flexi->FlexiFormSetting('MailChimpApiKey')->getValue());
         $list_id = $flexi->FlexiFormSetting('MailChimpListID')->getValue();
         $groups = $this->getInterestGroups($list_id, $client);
         foreach ($new_groups as $group_id) {
             if ($group = $groups->find('id', $group_id)) {
                 $options = array();
                 foreach ($group['groups'] as $option) {
                     // mailchimp subscribe API uses names vs. IDs...
                     //$options[$option['id']] = $option['name'];
                     $options[$option['name']] = $option['name'];
                 }
                 $field = FlexiFormUtil::CreateFlexiField('FlexiMailChimpInterestGroupField', array('Name' => $group['name'], 'InterestGroupID' => $group['id'], 'InterestGroupFormField' => $group['form_field'], 'Readonly' => true, 'Options' => $options));
                 $fields->add($field, array('Prompt' => $group['name']));
             }
         }
     }
     return parent::onConfigUpdate($config, $flexi);
 }