diff --git hidden_widget.info hidden_widget.info
index 5cab3f5..98158b4 100644
--- hidden_widget.info
+++ hidden_widget.info
@@ -1,5 +1,5 @@
 name = Hidden Widget
-description = Create a hidden CCK field in the node entry.
-package = CCK
-core = 6.x
-dependencies[] = content
\ No newline at end of file
+description = Provides a hidden field widget.
+package = Fields
+core = 7.x
+dependencies[] = field
\ No newline at end of file
diff --git hidden_widget.module hidden_widget.module
index 84bf304..cd30e7a 100644
--- hidden_widget.module
+++ hidden_widget.module
@@ -2,64 +2,38 @@
 
 /**
  * @file
- * Allows CCK fields to be created which do not have any user interface.
+ * Allows fields to be created which do not have any user interface.
  */
 
 /**
- * Implementation of hook_widget_info().
+ * Implements hook_field_widget_info().
  */
-function hidden_widget_widget_info() {
-  return array(
-    'hidden' => array(
+function hidden_widget_field_widget_info() {
+  $widget = array(
+    'hidden_widget_hidden' => array(
       'label' => t('Hidden'),
-      'field types' => array(
-        'text', 'number_integer', 'number_decimal', 'number_float', 'nodereference', 'userreference',
-        'content_taxonomy',
+      'behaviors' => array(
+        'multiple values' => FIELD_BEHAVIOR_CUSTOM,
+        'default value' => FIELD_BEHAVIOR_DEFAULT,
       ),
-      'multiple values' => CONTENT_HANDLE_MODULE,
-      'callbacks' => array(
-        'default value' => CONTENT_CALLBACK_DEFAULT,
-      )
     ),
   );
-}
 
-/**
- * Implementation of hook_widget().
- */
-function hidden_widget_widget(&$form, &$form_state, $field, $items) {
-  $elements = array();
-  
-  $items+= array(0 => array());
-  
-  foreach ($items as $delta => $item) {
-    switch ($field['type']) {
-      case 'text':
-      case 'number_integer':
-      case 'number_decimal':
-      case 'number_float':
-      case 'content_taxonomy':
-        $elements[$delta]['value'] = array(
-          '#type' => 'value',
-          '#value' => isset($items[$delta]['value']) ? $items[$delta]['value'] : ($field['type'] == 'text' ? '' : 0),
-        );
-        break;
-      
-      case 'nodereference':
-        $elements[$delta]['nid'] = array(
-          '#type' => 'value',
-          '#value' => isset($items[$delta]['nid']) ? $items[$delta]['nid'] : 0,
-        );
-        break;
-      
-      case 'userreference':
-        $elements[$delta]['uid'] = array(
-          '#type' => 'value',
-          '#value' => isset($items[$delta]['uid']) ? $items[$delta]['uid'] : 0,
-        );
-        break;
+  // Add this widget to all possible field types.
+  // Do not use field_info_field_types(), as it would invoke this function as well.
+  $widget['hidden_widget_hidden']['field types'] = array();
+  foreach (module_implements('field_info') as $module) {
+    $field_types = (array) module_invoke($module, 'field_info');
+    foreach ($field_types as $name => $field_info) {
+      $widget['hidden_widget_hidden']['field types'][] = $name;
     }
   }
-  
-  return $elements;
+  return $widget;
 }
+
+/**
+ * Implements hook_field_widget_form().
+ */
+function hidden_widget_field_widget_form(&$form, &$form_state, $field, $instance, $langcode, $items, $delta, $element) {
+  return $element;
+}
\ No newline at end of file
