diff --git a/modules/optionwidgets/optionwidgets.module b/modules/optionwidgets/optionwidgets.module
index 102af89..081000f 100644
--- a/modules/optionwidgets/optionwidgets.module
+++ b/modules/optionwidgets/optionwidgets.module
@@ -197,6 +197,16 @@ function optionwidgets_buttons_process($element, $edit, &$form_state, $form) {
     '#multiple' => isset($element['#multiple']) ? $element['#multiple'] : $field['multiple'],
     '#options' => $options,
     '#default_value' => isset($element['#value'][$field_key]) ? $element['#value'][$field_key] : NULL,
+    // add element additional properties
+    '#theme' => isset($element['#theme']) ? $element['#theme'] : NULL,
+    '#weight' => isset($element['#weight']) ? $element['#weight'] : NULL,
+    '#size' => isset($element['#size']) ? $element['#size'] : NULL,
+    '#attributes' => isset($element['#attributes']) ? $element['#attributes'] : array(),
+    '#ahah' => isset($element['#ahah']) ? $element['#ahah'] : array(),
+    '#disabled' => isset($element['#disabled']) ? $element['#disabled'] : FALSE,
+    '#access' => isset($element['#access']) ? $element['#access'] : TRUE,
+    '#prefix' => isset($element['#prefix']) ? $element['#prefix'] : '',
+    '#suffix' => isset($element['#suffix']) ? $element['#suffix'] : '',
   );
 
   // Set #element_validate in a way that it will not wipe out other
@@ -245,6 +255,16 @@ function optionwidgets_select_process($element, $edit, &$form_state, $form) {
     '#multiple' => isset($element['#multiple']) ? $element['#multiple'] : $field['multiple'],
     '#options' => $options,
     '#default_value' => isset($element['#value'][$field_key]) ? $element['#value'][$field_key] : NULL,
+    // add element additional properties
+    '#theme' => isset($element['#theme']) ? $element['#theme'] : NULL,
+    '#weight' => isset($element['#weight']) ? $element['#weight'] : NULL,
+    '#size' => isset($element['#size']) ? $element['#size'] : NULL,
+    '#attributes' => isset($element['#attributes']) ? $element['#attributes'] : array(),
+    '#ahah' => isset($element['#ahah']) ? $element['#ahah'] : array(),
+    '#disabled' => isset($element['#disabled']) ? $element['#disabled'] : FALSE,
+    '#access' => isset($element['#access']) ? $element['#access'] : TRUE,
+    '#prefix' => isset($element['#prefix']) ? $element['#prefix'] : '',
+    '#suffix' => isset($element['#suffix']) ? $element['#suffix'] : '',
   );
 
   // Set #element_validate in a way that it will not wipe out other
@@ -293,6 +313,16 @@ function optionwidgets_onoff_process($element, $edit, &$form_state, $form) {
     '#required' => isset($element['#required']) ? $element['#required'] : $field['required'],
     '#default_value' => isset($element['#value'][$field_key][0]) ? $element['#value'][$field_key][0] == $on_value : FALSE,
     '#return_value' => $on_value,
+    // add element additional properties
+    '#theme' => isset($element['#theme']) ? $element['#theme'] : NULL,
+    '#weight' => isset($element['#weight']) ? $element['#weight'] : NULL,
+    '#size' => isset($element['#size']) ? $element['#size'] : NULL,
+    '#attributes' => isset($element['#attributes']) ? $element['#attributes'] : array(),
+    '#ahah' => isset($element['#ahah']) ? $element['#ahah'] : array(),
+    '#disabled' => isset($element['#disabled']) ? $element['#disabled'] : FALSE,
+    '#access' => isset($element['#access']) ? $element['#access'] : TRUE,
+    '#prefix' => isset($element['#prefix']) ? $element['#prefix'] : '',
+    '#suffix' => isset($element['#suffix']) ? $element['#suffix'] : '',
   );
 
   // Set #element_validate in a way that it will not wipe out other
