diff --git a/office_hours.css b/office_hours.css
index 64c11e3..81ccb14 100644
--- a/office_hours.css
+++ b/office_hours.css
@@ -18,29 +18,29 @@
   font-style: italic;
 }
 
-/* Blocks */
-.office-hours-block .form-item label {
+/* Slots */
+.office-hours-slot .form-item label {
   display: inline;
 }
 
-div.office-hours-block div {
+div.office-hours-slot div {
   display: inline;
 }
 
-.office-hours-block .dayname {
+.office-hours-slot .dayname {
   width: 6em;
   display: -moz-inline-box;
   display: inline-block;
   font-weight: bold;
 }
 
-.office-hours-block .form-item label { font-weight: normal; }
+.office-hours-slot .form-item label { font-weight: normal; }
 .office_hours_table { margin-top: 0; }
 .office_hours_table tbody { border: none; }
 .office_hours_table tr, .office_hours_table td  { border: none!important; }
 .office_hours_table tr.odd { background: transparent none; }
 
-div.office-hours-block span.day {
+div.office-hours-slot span.day {
   width: 100px;
   display: inline-block;
 }
@@ -52,4 +52,4 @@ div.field-widget-office-hours table {
 
 div.field-widget-office-hours table tr td {
 /*  width: 55%; */
-}
\ No newline at end of file
+}
diff --git a/office_hours.elements.inc b/office_hours.elements.inc
index 0df2b04..bcba92f 100644
--- a/office_hours.elements.inc
+++ b/office_hours.elements.inc
@@ -13,54 +13,45 @@
  * Build the form element. When creating a form using FAPI #process,
  * note that $element['#value'] is already set.
  */
-function _office_hours_field_process($element, &$form_state, $form) {
-  $field_settings = _office_hours_get_field_settings($element, $form_state);
-
+function _office_hours_slot_process($element, &$form_state, $form) {
   $day = $element['#weight'];
   $day = (int)($day / 2); // Keys are 0+1 for sunday, 2+3 for monday, etc. Each day may have normal hours + extra hours.
 
-  $field_day = $element['#columns'][0];
-  $field_strhrs = $element['#columns'][1];
-  $field_endhrs = $element['#columns'][2];
   $days = date_week_days_untranslated();
 
   if (!($element['#weight'] & 1)) { //first cell
-    $element['#prefix'] = '<div class="office-hours-block"><div class="dayname">' . t($days[$day]) . '</div>';
+    $element['#prefix'] = '<div class="office-hours-slot"><div class="dayname">' . t($days[$day]) . '</div>';
   }
-  elseif ($field_settings['addhrs']) {  // second cell, we're supposed to show the 'add hours link'
-    $link = l(t('Add more hours'), '', array('attributes' => array('class' => 'oh-add-more-link'))) . '<div class="office-hours-block" style = "display:none;">' . '<div class="dayname">' . t('and') . '</div>';
-    $element['#prefix'] = isset($element['#value'][$field_strhrs]) ? '<div class="office-hours-block">' . '<div class="dayname">' . t('and') . '</div>' : $link;
+  elseif ($element['#addhrs']) {  // second cell, we're supposed to show the 'add hours link'
+    $link = l(t('Add more hours'), '', array('attributes' => array('class' => 'oh-add-more-link'))) . '<div class="office-hours-slot" style = "display:none;">' . '<div class="dayname">' . t('and') . '</div>';
+    $element['#prefix'] = isset($element['#value']['starthours']) ? '<div class="office-hours-slot">' . '<div class="dayname">' . t('and') . '</div>' : $link;
   }
   else { //this is the second cell and were not showing it- better clear it (in case a value was entered before).
     $element['#prefix'] = "<div class='oh-hide'>";
-    $element['#value'][$field_strhrs] = '';
+    $element['#value']['starthours'] = '';
   }
   $element['#suffix'] = '</div>';
-  $element[$field_day] = array(
+  $element['day'] = array(
     '#type' => 'value',
     '#value' => $element['#weight'],
   );
-  $element[$field_strhrs] = array(
+  $settings = array(
+    '#granularity' => $element['#granularity'],
+    '#valhrs' => $element['#valhrs'],
+    '#hoursformat' => $element['#hoursformat'],
+    '#limitstart' => $element['#limitstart'],
+    '#limitend' => $element['#limitend'],
+  );
+  $element['starthours'] = array(
     '#type' => 'office_hours_select',
     '#prefix' => ' ' . t('from'),
-    '#default_hours' => isset($element['#value'][$field_strhrs]) ? $element['#value'][$field_strhrs] : '' ,
-    '#granularity' => $field_settings['granularity'],
-    '#valhrs' => $field_settings['valhrs'],
-    '#hoursformat' => $field_settings['hoursformat'],
-    '#limitstart' => $field_settings['limitstart'],
-    '#limitend' => $field_settings['limitend'],
-  );
-  $element[$field_endhrs] = array(
+    '#default_hours' => isset($element['#value']['starthours']) ? $element['#value']['starthours'] : '' ,
+  ) + $settings;
+  $element['endhours'] = array(
     '#type' => 'office_hours_select',
     '#prefix' => t('until'),
-    '#default_hours' => isset($element['#value'][$field_endhrs]) ? $element['#value'][$field_endhrs] : '',
-    '#granularity' => $field_settings['granularity'],
-    '#valhrs' => $field_settings['valhrs'],
-    '#hoursformat' => $field_settings['hoursformat'],
-    '#limitstart' => $field_settings['limitstart'],
-    '#limitend' => $field_settings['limitend'],
-
-  );
+    '#default_hours' => isset($element['#value']['endhours']) ? $element['#value']['endhours'] : '',
+  ) + $settings;
 
   return $element;
 }
@@ -124,26 +115,13 @@ function _office_hours_select_validate($element, &$form_state) {
 }
 
 /**
- * Implements hook_field_is_empty() for hours selection element.
- */
-function office_hours_select_is_empty($item, $field) {
-  if ( ( $item['hours']   == '' || $item['hours']   == '00' )
-    && ( $item['minutes'] == '' || $item['minutes'] == '00' ) ) {
-    return TRUE;
-  }
-  return FALSE;
-}
-
-/**
  * Implements a callback for _office_hours_elements()
  * which defines the 'office_hours' (day) and 'office_hours_select' (hour) elements.
  *
  * You can find the value in $element['#value'], but better in $form_state['values'],
  * which is set in _office_hours_select_validate().
  */
-function _office_hours_field_validate($element, &$form_state) {
-  $field_settings = _office_hours_get_field_settings($element, $form_state);
-
+function _office_hours_slot_validate($element, &$form_state) {
   $delta = $element['#delta'];
   $item = drupal_array_get_nested_value($form_state['values'], $element['#parents']);
 
@@ -151,14 +129,14 @@ function _office_hours_field_validate($element, &$form_state) {
   if (!empty($item['starthours']) xor !empty($item['endhours']) ) {
     $error_text = 'Both Opening hours and Closing hours must be set.';
   }
-  elseif ( ($field_settings['valhrs']) && ($item['starthours'] > $item['endhours']) ) {
+  elseif ( ($element['#valhrs']) && ($item['starthours'] > $item['endhours']) ) {
     $error_text = 'Closing hours are earlier than opening hours.';
   }
-  elseif (!empty($field_settings['limitstart']) || !empty($field_settings['limitend'])) {
+  elseif (!empty($element['#limitstart']) || !empty($element['#limitend'])) {
     $starthours = (int) substr($item['starthours'], 0, 2);
     $endhours = (int) substr($item['endhours'], 0, 2);
-    if ( ($starthours && $field_settings['limitstart'] > $starthours) || ($endhours && $field_settings['limitend'] < $endhours) ) {
-      $error_text = 'Opening hours are outside limits' . ' (' . $field_settings['limitstart'] . ' - ' . $field_settings['limitend'] . ').';
+    if ( ($starthours && $element['#limitstart'] > $starthours) || ($endhours && $element['#limitend'] < $endhours) ) {
+      $error_text = 'Opening hours are outside limits' . ' (' . $element['#limitstart'] . ' - ' . $element['#limitend'] . ').';
     }
   }
 
@@ -169,24 +147,3 @@ function _office_hours_field_validate($element, &$form_state) {
     form_error($element, check_plain($error_text));
   }
 }
-
-/**
- * Gets the data from an array, to cater for the Profile2 array
- */
-function _office_hours_get_field_settings($element, &$form_state) {
-  if (isset( $form_state['field'][$element['#field_name']]) ) {
-    $field_settings = &$form_state['field'][$element['#field_name']][$element['#language']]['field']['settings'];
-  }
-  else {
-    // This is to cater for the Profile2 edit page.
-    $parents = array_slice($element['#array_parents'], 2, -1);
-    $parents = array('#parents', $element['#array_parents'][0], '#fields');
-    $parents[] = $element['#field_name'];
-    $parents[] = $element['#language'];
-    $parents[] = 'field';
-    $parents[] = 'settings';
-
-    $field_settings = drupal_array_get_nested_value($form_state['field'], $parents);
-  }
-  return $field_settings;
-}
diff --git a/office_hours.install b/office_hours.install
index 17611e9..50b1bc9 100644
--- a/office_hours.install
+++ b/office_hours.install
@@ -5,6 +5,31 @@
  */
 
 /**
+ * Implements hook_field_schema($field).
+ */
+function office_hours_field_schema($field) {
+  switch ($field['type']) {
+    case 'office_hours':
+      $db_columns = array(
+        'day' => array(
+          'type' => 'int',
+          'not null' => FALSE
+        ),
+        'starthours' => array(
+          'type' => 'int',
+          'not null' => FALSE
+        ),
+        'endhours' => array(
+          'type' => 'int',
+          'not null' => FALSE
+        ),
+      );
+    break;
+  }
+  return array('columns' => $db_columns);
+}
+
+/**
  * Implements hook_install().
  */
 //function office_hours_install() {
diff --git a/office_hours.js b/office_hours.js
index 6a6d0c7..01677f7 100644
--- a/office_hours.js
+++ b/office_hours.js
@@ -3,11 +3,11 @@ Drupal.behaviors.office_hours = {
   attach: function(context,settings) {
   $(".oh-hide", context).parent().hide();
   $(".oh-add-more-link", context).each(function (i) {
-   $(this).parent().children("div.office-hours-block").hide();
+   $(this).parent().children("div.office-hours-slot").hide();
     })
     .click(function () {
     $(this).hide();
-    $(this).parent().children("div.office-hours-block").fadeIn("slow");
+    $(this).parent().children("div.office-hours-slot").fadeIn("slow");
     return false;
   });
 }
diff --git a/office_hours.module b/office_hours.module
index c91d6e1..75775a1 100644
--- a/office_hours.module
+++ b/office_hours.module
@@ -4,7 +4,7 @@
  * Creates a field and widget for inserting working or office hours per day
  */
 
-// @TODO 2012-05-13: it would be nice to include this file in the .info-file, but the OH-block is lost after F5-page refresh.
+// @TODO 2012-05-13: it would be nice to include this file in the .info-file, but the OH-slot is lost after F5-page refresh.
 module_load_include('elements.inc', 'office_hours');
 
 /**
@@ -18,7 +18,7 @@ function office_hours_theme($existing, $type, $theme, $path) {
   $themes = array(
     'office_hours_formatter_default' => $base + array('render element' => 'element'),
     'office_hours_time_range' => $base + array('render element' => 'element'),
-    'office_hours' => $base + array('render element' => 'element'),
+    'office_hours_slot' => $base + array('render element' => 'element'),
     'field_multiple_value_form' => $base + array('render element' => 'element'),
     'office_hours_select' => $base + array('render element' => 'element'),
   );
@@ -34,7 +34,7 @@ function office_hours_theme_registry_alter(&$theme_registry) {
  */
 function office_hours_form_field_ui_field_edit_form_alter(&$form, &$form_state, $form_id) {
   if ($form['#field']['type'] == 'office_hours') {
-    $description = t('14 hours blocks is the current default. See below for limiting it.');
+    $description = t('14 hours slots is the current default. See below for limiting it.');
     $description .= '<br/><strong>' . t('Warning! Changing this setting after data has been created could result in the loss of data!') . '</strong>';
     $form['field']['cardinality'] = array(
       '#type' => 'select',
@@ -69,7 +69,14 @@ function office_hours_field_info() {
     'office_hours' => array(
       'label' => 'Office Hours',
       'description' => t('Store office or opening hours in the database.'),
-      'instance_settings' => array('hoursformat', 'granularity', 'limitstart', 'limitend', 'valhrs', 'addhrs'),
+      'settings' => array(
+        'hoursformat' => 0,
+        'granularity' => 60,
+        'limitstart' => '',
+        'limitend' => '',
+        'valhrs' => 0,
+        'addhrs' => 1,
+      ),
       'default_widget' => 'office_hours',
       'default_formatter' => 'office_hours',
 
@@ -123,75 +130,66 @@ function office_hours_field_settings_form($field, $instance, $has_data) {
     '#type' => 'select',
     '#title' => t('Hours format'),
     '#options' => array(0 => t('24 hrs'), 1 => t('12 hrs')),
-    '#default_value' => isset($settings['hoursformat']) ? $settings['hoursformat'] : 0,
+    '#default_value' => $settings['hoursformat'],
     '#required' => FALSE,
     '#description' => t('Format of the clock. IMPORTANT NOTE: if you do not select "Multiple values", you can enter only one day.'),
+    '#disabled' => $has_data,
   );
   $form['granularity'] = array(
     '#type' => 'select',
     '#title' => t('Granularity of time'),
     '#options' => array( '60' => t('hours'), '30' => t('half hours'), '15' => t('quarter hours'), '5' => t('5 minute intervals'), '1' => t('minutes') ),
-    '#default_value' => isset($settings['granularity']) ? $settings['granularity'] : 0,
+    '#default_value' => $settings['granularity'],
     '#required' => FALSE,
     '#description' => t('Restrict the input to fixed fractions of an hour.'),
+    '#disabled' => $has_data,
   );
   $form['addhrs'] = array(
     '#type' => 'checkbox',
     '#title' => t('Display the "Add more hours" link'),
     '#required' => FALSE,
-    '#default_value' => isset($settings['addhrs']) ? $settings['addhrs'] : 1,
-    '#description' => t('Make it possible to use 2 hour block for each day instead of one.'),
+    '#default_value' => $settings['addhrs'],
+    '#description' => t('Make it possible to use 2 hour slots for each day instead of one.'),
   );
   $form['valhrs'] = array(
     '#type' => 'checkbox',
     '#title' => t('Validate hours'),
     '#required' => FALSE,
-    '#default_value' => isset($settings['valhrs']) ? $settings['valhrs'] : 0,
+    '#default_value' => $settings['valhrs'],
     '#description' => t('Assure that endhours are later then starthours. Please note that this will work as long as the opening hours are not through midnight.'),
+    '#disabled' => $has_data,
   );
+  $hours = _office_hours_show_ampm(date_hours('H'));
   $form['limitstart'] = array(
     '#type' => 'select',
     '#title' => t('Limit widget hours - start from'),
     '#description' => t('Restrict the hours available - select options will start from this hour.'),
-    '#default_value' => !empty($settings['limitstart']) ? $settings['limitstart'] : '',
-    '#options' => _office_hours_show_ampm(date_hours('H')),
+    '#default_value' => $settings['limitstart'],
+    '#options' => $hours,
+    '#disabled' => $has_data,
   );
   $form['limitend'] = array(
     '#type' => 'select',
     '#title' => t('Limit widget hours - until'),
     '#description' => t('Restrict the hours available - select options will end at this hour.'),
-    '#default_value' => !empty($settings['limitend']) ? $settings['limitend'] : '',
-    '#options' => _office_hours_show_ampm(date_hours('H')),
+    '#default_value' => $settings['limitend'],
+    '#options' => $hours,
+    '#disabled' => $has_data,
   );
 
   return $form;
 }
 
 /**
- * Implements the #element_validate callback for myfield_field_settings_form().
+ * Implements the #element_validate callback for office_hours_field_settings_form().
+ *
  * Verifies the office hours limits.
  * "Please note that this will work as long as the opening hours are not through midnight."
  */
 function _office_hours_field_settings_form_validate($element, &$form_state) {
-  if ($element['limitstart']['#value'] > $element['limitend']['#value']) {
-    form_error($element['limitstart'], t('%start is later then %end.', array('%start' => $element['limitstart']['#title'], '%end' => $element['limitend']['#title'] )));
-  }
-}
-
-/**
- * Implements hook_field_schema($field).
- */
-function office_hours_field_schema($field) {
-  switch ($field['type']) {
-    case 'office_hours':
-      $db_columns = array(
-        'day' => array('type' => 'int', 'not null' => FALSE),
-        'starthours' => array('type' => 'int', 'not null' => FALSE),
-        'endhours' => array('type' => 'int', 'not null' => FALSE),
-      );
-    break;
+  if (($element['valhrs']['#value']) && ($element['limitstart']['#value'] > $element['limitend']['#value'])) {
+    form_error($element['limitstart'], t('%start is later than %end.', array('%start' => $element['limitstart']['#title'], '%end' => $element['limitend']['#title'] )));
   }
-  return array('columns' => $db_columns);
 }
 
 /**
@@ -210,13 +208,15 @@ function office_hours_field_formatter_info() {
   return array(
     'office_hours' => array(
       'label' => 'Office hours',
-      'field types' =>  array('office_hours_formatter_default', 'office_hours', 'office_hours_multiple_values', 'office_hours_select'),
-      'multiple values' => FIELD_BEHAVIOR_DEFAULT,
+      'field types' =>  array('office_hours'),
       'settings' => _office_hours_field_formatter_defaults(),
     ),
   );
 }
 
+/**
+ * Implements hook_field_formatter_settings_form().
+ */
 function office_hours_field_formatter_settings_form($field, $instance, $view_mode, $form, &$form_state) {
   $display = $instance['display'][$view_mode];
   $settings = _office_hours_field_formatter_defaults($instance['display'][$view_mode]['settings']);
@@ -388,6 +388,7 @@ function office_hours_field_formatter_settings_form($field, $instance, $view_mod
 
 /**
  * Implements hook_field_formatter_settings_summary().
+ *
  * Returns a short summary for the current formatter settings of an instance.
  * @TODO: return more info, like the Date module does.
  */
@@ -404,6 +405,7 @@ function office_hours_field_formatter_settings_summary($field, $instance, $view_
 
 /**
  * Implements hook_field_formatter_view().
+ *
  * Be careful: date_api uses 0=Sunday, and DateObject uses ISO: 1=Sunday.
  */
 function office_hours_field_formatter_view($entity_type, $entity, $field, $instance, $langcode, $items, $display) {
@@ -578,22 +580,28 @@ function office_hours_field_widget_info() {
  */
 function office_hours_field_widget_form(&$form, &$form_state, $field, $instance, $langcode, $items, $delta, $element) {
   if ($delta == 0) {
-    // This function is called 14 times for each block. We only need to include files once, not 14 times.
+    // This function is called 14 times. We only need to include files once, not 14 times.
     // @TODO: perhaps it is even better to include it in office_hours_field_multiple_value_form(), which is only called once per page.
     drupal_add_js(drupal_get_path('module', 'office_hours') . "/office_hours.js", 'file');
   }
 
   $items = _office_hours_arrange_items($items);
   $element += array(
-    '#type' => 'office_hours',
+    '#type' => 'office_hours_slot',
     '#default_value' => isset($items[$delta]['starthours']) ? $items[$delta] : NULL,
   );
 
+  $field_settings = array('hoursformat', 'granularity', 'addhrs', 'valhrs', 'limitstart', 'limitend');
+  foreach ($field_settings as $key) {
+    $element['#' . $key] = $field['settings'][$key];
+  }
+
   return $element;
 }
 
 /**
  * Implements hook_field_widget_error().
+ *
  * This is necessary to show the errors thrown in hook_field_validate().
  */
 function office_hours_field_widget_error($element, $error, $form, &$form_state) {
@@ -605,12 +613,12 @@ function office_hours_field_widget_error($element, $error, $form, &$form_state)
  */
 function office_hours_element_info() {
   return array(
-    'office_hours' => array(
+    'office_hours_slot' => array(
       '#input' => TRUE,
       '#tree' => TRUE,
       '#columns' => array('day', 'starthours', 'endhours'),
-      '#process' => array('_office_hours_field_process'),
-      '#element_validate' => array('_office_hours_field_validate'),
+      '#process' => array('_office_hours_slot_process'),
+      '#element_validate' => array('_office_hours_slot_validate'),
       '#theme' => 'office_hours',
     ),
     'office_hours_select' => array(
diff --git a/office_hours.theme.inc b/office_hours.theme.inc
index 3ccf36f..101d7ea 100644
--- a/office_hours.theme.inc
+++ b/office_hours.theme.inc
@@ -111,7 +111,7 @@ function theme_office_hours_formatter_default($vars) {
   return $HTML;
 }
 
-function theme_office_hours($vars) {
+function theme_office_hours_slot($vars) {
   return $vars['element']['#children'];
 }
 
@@ -130,7 +130,7 @@ function theme_office_hours_select($vars) {
  */
 function office_hours_field_multiple_value_form($variables) {
   // Use Field's theme function for non-office hours fields.
-  if (empty($variables['element'][0]['#type']) || $variables['element'][0]['#type'] != 'office_hours') {
+  if (empty($variables['element'][0]['#type']) || $variables['element'][0]['#type'] != 'office_hours_slot') {
     return theme_field_multiple_value_form($variables);
   }
 
