diff -urpN old/publicbookings/handlers/views_handler_field.inc new/publicbookings/handlers/views_handler_field.inc
--- old/publicbookings/handlers/views_handler_field.inc	1970-01-01 07:00:00.000000000 +0700
+++ new/publicbookings/handlers/views_handler_field.inc	2008-09-27 19:03:34.484375000 +0700
@@ -0,0 +1,91 @@
+<?php
+// $Id$
+
+class views_handler_field_publicbookings_record_link extends views_handler_field {
+  function construct() {
+    parent::construct();
+    $this->additional_fields['record_id'] = 'record_id';
+  }
+
+  function query() { // what is this?
+    $this->ensure_my_table();
+    $this->add_additional_fields();
+  }
+
+  function render($values) {
+    parent::render($values);
+  }
+}
+
+class views_handler_field_publicbookings_resource_link extends views_handler_field {
+  function construct() {
+    parent::construct();
+    $this->additional_fields['resource_id'] = 'resource_id';
+  }
+
+  function query() { // what is this?
+    $this->ensure_my_table();
+    $this->add_additional_fields();
+  }
+
+  function render($values) {
+    parent::render($values);
+  }
+}
+
+class views_handler_field_publicbookings_booking_link_edit extends views_handler_field_publicbookings_record_link {
+  function render($values) {
+    parent::render($values);
+    $record_id = $values->{$this->aliases['record_id']};
+    return l(t('edit'), "admin/content/publicbookings/booking/$record_id/edit");
+  }
+}
+
+class views_handler_field_publicbookings_booking_link_delete extends views_handler_field_publicbookings_record_link {
+  function render($values) {
+    parent::render($values);
+    $record_id = $values->{$this->aliases['record_id']};
+    return l(t('delete'), "admin/content/publicbookings/booking/$record_id/delete");
+  }
+}
+
+class views_handler_field_publicbookings_availability_link_edit extends views_handler_field_publicbookings_record_link {
+  function render($values) {
+    parent::render($values);
+    $record_id = $values->{$this->aliases['record_id']};
+    return l(t('edit'), "admin/content/publicbookings/availability/$record_id/edit");
+  }
+}
+
+class views_handler_field_publicbookings_availability_link_delete extends views_handler_field_publicbookings_record_link {
+  function render($values) {
+    parent::render($values);
+    $record_id = $values->{$this->aliases['record_id']};
+    return l(t('delete'), "admin/content/publicbookings/availability/$record_id/delete");
+  }
+}
+
+
+
+class views_handler_field_publicbookings_resource_link_edit extends views_handler_field_publicbookings_resource_link {
+  function render($values) {
+    parent::render($values);
+    $resource_id = $values->{$this->aliases['resource_id']};
+    return l(t('edit'), "admin/content/publicbookings/resource/$resource_id/edit");
+  }
+}
+
+class views_handler_field_publicbookings_resource_link_delete extends views_handler_field_publicbookings_resource_link {
+  function render($values) {
+    parent::render($values);
+    $resource_id = $values->{$this->aliases['resource_id']};
+    return l(t('delete'), "admin/content/publicbookings/resource/$resource_id/delete");
+  }
+}
+class views_handler_field_publicbookings_resource_link_availability extends views_handler_field_publicbookings_resource_link {
+  function render($values) {
+    parent::render($values);
+    $resource_id = $values->{$this->aliases['resource_id']};
+    return l(t('availability'), "admin/content/publicbookings/resource/$resource_id/availability/list");
+  }
+}
\ No newline at end of file
diff -urpN old/publicbookings/publicbookings.admin.inc new/publicbookings/publicbookings.admin.inc
--- old/publicbookings/publicbookings.admin.inc	2008-08-19 02:57:49.000000000 +0700
+++ new/publicbookings/publicbookings.admin.inc	2008-09-27 20:35:49.406250000 +0700
@@ -13,6 +13,9 @@ function publicbookings_overview_page() 
   include_once('publicbookings.views_default.inc');
   $text = '<h3>'.t('Awaiting approval').'</h3>';
   $view = publicbookings_view_schedules_admin();
+  //echo '<pre>';
+  //print_r($view);
+  //echo '</pre>';
   $text .= $view->preview(NULL, array(1)); // first argument is the status code
   $text .= '<h3>'.t('Finalized').'</h3>';
   $view = publicbookings_view_schedules_admin();
@@ -103,10 +106,10 @@ function publicbookings_booking_form(&$f
  * @param array $form_state
  */
 function publicbookings_booking_form_validate($form, &$form_state) {
-  if(!empty($form_state['values']['ical_rrule'])) {
-    $form_state['values']['ical_rrule_until'] = bookingsapi_rrule_until_as_dt($form_state['values']['ical_rrule']);
-    if(empty($form_state['values']['ical_rrule_until'])) {
-      form_set_error('ical_rrule', t('Recurrences must have an end date.'));
+  if(!empty($form_state['values']['rrule'])) {
+    $form_state['values']['rrule_until'] = bookingsapi_rrule_until_as_dt($form_state['values']['rrule']);
+    if(empty($form_state['values']['rrule_until'])) {
+      form_set_error('rrule', t('Recurrences must have an end date.'));
     }
   }
   publicbookings_conflict_check($form_state['values']);
@@ -337,10 +340,10 @@ function publicbookings_availability_for
 
 // temporarily identical to booking equivalent
 function publicbookings_availability_form_validate($form, &$form_state) {
-if(!empty($form_state['values']['ical_rrule'])) {
-    $form_state['values']['ical_rrule_until'] = bookingsapi_rrule_until_as_dt($form_state['values']['ical_rrule']);
-    if(empty($form_state['values']['ical_rrule_until'])) {
-      form_set_error('ical_rrule', t('Recurrences must have an end date.'));
+if(!empty($form_state['values']['rrule'])) {
+    $form_state['values']['rrule_until'] = bookingsapi_rrule_until_as_dt($form_state['values']['rrule']);
+    if(empty($form_state['values']['rrule_until'])) {
+      form_set_error('rrule', t('Recurrences must have an end date.'));
     }
   }
   if($form_state['values']['type'] == BOOKINGSAPI_UNA_R) {
diff -urpN old/publicbookings/publicbookings.ajax.inc new/publicbookings/publicbookings.ajax.inc
--- old/publicbookings/publicbookings.ajax.inc	2008-08-10 13:43:26.000000000 +0700
+++ new/publicbookings/publicbookings.ajax.inc	2008-09-27 20:35:48.578125000 +0700
@@ -54,8 +54,8 @@ function publicbookings_ajax_post_prepar
     // if first EXDATE is invalid, unset the entire EXDATE array to prevent errors
     if($processed['EXDATE'][0]['datetime'] == '0000-00-00 00:00:00') unset($processed['EXDATE']);
 
-    $params['ical_rrule'] = date_api_ical_build_rrule( $processed );
-    $params['ical_rrule_until'] = bookingsapi_rrule_until_as_dt($params['ical_rrule']);
+    $params['rrule'] = date_api_ical_build_rrule( $processed );
+    $params['rrule_until'] = bookingsapi_rrule_until_as_dt($params['rrule']);
   }
 
   return $params;
diff -urpN old/publicbookings/publicbookings.module new/publicbookings/publicbookings.module
--- old/publicbookings/publicbookings.module	2008-08-19 02:57:34.000000000 +0700
+++ new/publicbookings/publicbookings.module	2008-09-27 21:17:48.171875000 +0700
@@ -440,7 +440,7 @@ function publicbookings_booking_save(&$v
         if($using_sql_ts_triggers) $values['modified'] = date(DATE_FORMAT_DATETIME);
       }
 
-      drupal_write_record('publicbookings_clients', &$values, $update);
+      drupal_write_record('publicbookings_clients', $values, $update);
       $values = (array) $values;
 
       switch($record_save) {
@@ -484,4 +484,46 @@ function publicbookings_generate_passphr
     $length--;
   }
   return $pass;
+}
+
+/**
+ * Implementation of hook_views_api().
+ */
+function publicbookings_views_api() {
+  return array(
+    'api' => '2.0',
+  );
+}
+
+/**
+ * Implementation of hook_views_handlers().
+ */
+function publicbookings_views_handlers() {
+  return array(
+    'info' => array(
+      'path' => drupal_get_path('module', 'publicbookings') . '/handlers',
+    ),
+    'handlers' => array(
+      'views_handler_field_publicbookings_record_link' => array(
+        'parent' => 'views_handler_field',
+        'file' => 'views_handler_field.inc',
+      ),
+      'views_handler_field_publicbookings_resource_link' => array(
+        'parent' => 'views_handler_field',
+        'file' => 'views_handler_field.inc',
+      ),
+      'views_handler_field_publicbookings_booking_link_edit' => array(
+        'parent' => 'views_handler_field',
+        'file' => 'views_handler_field.inc',
+      ),
+      'views_handler_field_publicbookings_availability_link_edit' => array(
+        'parent' => 'views_handler_field',
+        'file' => 'views_handler_field.inc',
+      ),
+      'views_handler_field_publicbookings_resource_link_edit' => array(
+        'parent' => 'views_handler_field',
+        'file' => 'views_handler_field.inc',
+      ),
+    ),
+  );
 }
\ No newline at end of file
diff -urpN old/publicbookings/publicbookings.public.inc new/publicbookings/publicbookings.public.inc
--- old/publicbookings/publicbookings.public.inc	2008-08-19 02:17:58.000000000 +0700
+++ new/publicbookings/publicbookings.public.inc	2008-09-27 20:35:47.343750000 +0700
@@ -103,7 +103,7 @@ function publicbookings_request_form(&$f
   }
 
   // repeat functionality is probably unnecessary for public use
-  unset($form['basic']['ical_rrule']);
+  unset($form['basic']['rrule']);
 
   if (!empty($values)) {
     // clients don't have option to delete
diff -urpN old/publicbookings/publicbookings.views.inc new/publicbookings/publicbookings.views.inc
--- old/publicbookings/publicbookings.views.inc	2008-08-19 03:18:54.000000000 +0700
+++ new/publicbookings/publicbookings.views.inc	2008-09-27 18:20:56.734375000 +0700
@@ -8,15 +8,15 @@
  * Implementation of hook_views_data().
  */
 function publicbookings_views_data() {
-  $data['publicbookings_client']['table']['group']  = t('Booking client');
+  $data['publicbookings_clients']['table']['group']  = t('Booking client');
 
-  $data['publicbookings_client']['table']['base'] = array(
+  $data['publicbookings_clients']['table']['base'] = array(
     'field' => 'client_id',
     'title' => t('Booking client'),
     'help' => t("Booking requests made on the public request pages have client information."),
   );
 
-  $data['publicbookings_client']['table']['join'] = array(
+  $data['publicbookings_clients']['table']['join'] = array(
     'bookings_records' => array(
       'left_field' => 'record_id',
       'field' => 'record_id',
@@ -27,7 +27,7 @@ function publicbookings_views_data() {
     ),
   );
 
-  $data['publicbookings_client']['first_name'] = array(
+  $data['publicbookings_clients']['first_name'] = array(
     'title' => t('First name'),
     'help' => t('The first name of the client.'),
     'field' => array(
@@ -45,7 +45,7 @@ function publicbookings_views_data() {
     ),
   );
 
-  $data['publicbookings_client']['last_name'] = array(
+  $data['publicbookings_clients']['last_name'] = array(
     'title' => t('Last name'),
     'help' => t('The last name of the client.'),
     'field' => array(
@@ -63,7 +63,7 @@ function publicbookings_views_data() {
     ),
   );
 
-  $data['publicbookings_client']['phone'] = array(
+  $data['publicbookings_clients']['phone'] = array(
     'title' => t('Phone'),
     'help' => t('The phone number of the client.'),
     'field' => array(
@@ -72,7 +72,7 @@ function publicbookings_views_data() {
     ),
   );
 
-  $data['publicbookings_client']['email'] = array(
+  $data['publicbookings_clients']['email'] = array(
     'title' => t('Email'),
     'help' => t('The email address of the client.'),
     'field' => array(
@@ -81,7 +81,7 @@ function publicbookings_views_data() {
     ),
   );
 
-  $data['publicbookings_client']['comments'] = array(
+  $data['publicbookings_clients']['comments'] = array(
     'title' => t('Comments'),
     'help' => t('Comments by the client.'),
     'field' => array(
@@ -90,7 +90,7 @@ function publicbookings_views_data() {
     ),
   );
 
-  $data['publicbookings_client']['uid'] = array(
+  $data['publicbookings_clients']['uid'] = array(
     'title' => t('User'),
     'help' => t('If the client was logged in, this is the user ID.'),
     'relationship' => array(
@@ -101,7 +101,7 @@ function publicbookings_views_data() {
     ),
   );
 
-  $data['publicbookings_client']['created'] = array(
+  $data['publicbookings_clients']['created'] = array(
     'title' => t('Created date'),
     'help' => t('Created date.'),
     'field' => array(
@@ -116,7 +116,7 @@ function publicbookings_views_data() {
     ),
   );
 
-  $data['publicbookings_client']['changed'] = array(
+  $data['publicbookings_clients']['changed'] = array(
     'title' => t('Modified date'),
     'help' => t('Last modified.'),
     'field' => array(
@@ -240,89 +240,3 @@ function publicbookings_views_data() {
   return $data;
 }
 
-class views_handler_field_publicbookings_record_link extends views_handler_field {
-  function construct() {
-    parent::construct();
-    $this->additional_fields['record_id'] = 'record_id';
-  }
-
-  function query() { // what is this?
-    $this->ensure_my_table();
-    $this->add_additional_fields();
-  }
-
-  function render($values) {
-    parent::render($values);
-  }
-}
-
-class views_handler_field_publicbookings_booking_link_edit extends views_handler_field_publicbookings_record_link {
-  function render($values) {
-    parent::render($values);
-    $record_id = $values->{$this->aliases['record_id']};
-    return l(t('edit'), "admin/content/publicbookings/booking/$record_id/edit");
-  }
-}
-
-class views_handler_field_publicbookings_booking_link_delete extends views_handler_field_publicbookings_record_link {
-  function render($values) {
-    parent::render($values);
-    $record_id = $values->{$this->aliases['record_id']};
-    return l(t('delete'), "admin/content/publicbookings/booking/$record_id/delete");
-  }
-}
-
-class views_handler_field_publicbookings_availability_link_edit extends views_handler_field_publicbookings_record_link {
-  function render($values) {
-    parent::render($values);
-    $record_id = $values->{$this->aliases['record_id']};
-    return l(t('edit'), "admin/content/publicbookings/availability/$record_id/edit");
-  }
-}
-
-class views_handler_field_publicbookings_availability_link_delete extends views_handler_field_publicbookings_record_link {
-  function render($values) {
-    parent::render($values);
-    $record_id = $values->{$this->aliases['record_id']};
-    return l(t('delete'), "admin/content/publicbookings/availability/$record_id/delete");
-  }
-}
-
-class views_handler_field_publicbookings_resource_link extends views_handler_field {
-  function construct() {
-    parent::construct();
-    $this->additional_fields['resource_id'] = 'resource_id';
-  }
-
-  function query() { // what is this?
-    $this->ensure_my_table();
-    $this->add_additional_fields();
-  }
-
-  function render($values) {
-    parent::render($values);
-  }
-}
-
-class views_handler_field_publicbookings_resource_link_edit extends views_handler_field_publicbookings_resource_link {
-  function render($values) {
-    parent::render($values);
-    $resource_id = $values->{$this->aliases['resource_id']};
-    return l(t('edit'), "admin/content/publicbookings/resource/$resource_id/edit");
-  }
-}
-
-class views_handler_field_publicbookings_resource_link_delete extends views_handler_field_publicbookings_resource_link {
-  function render($values) {
-    parent::render($values);
-    $resource_id = $values->{$this->aliases['resource_id']};
-    return l(t('delete'), "admin/content/publicbookings/resource/$resource_id/delete");
-  }
-}
-class views_handler_field_publicbookings_resource_link_availability extends views_handler_field_publicbookings_resource_link {
-  function render($values) {
-    parent::render($values);
-    $resource_id = $values->{$this->aliases['resource_id']};
-    return l(t('availability'), "admin/content/publicbookings/resource/$resource_id/availability/list");
-  }
-}
\ No newline at end of file
diff -urpN old/publicbookings/publicbookings.views_default.inc new/publicbookings/publicbookings.views_default.inc
--- old/publicbookings/publicbookings.views_default.inc	2008-08-18 17:11:49.000000000 +0700
+++ new/publicbookings/publicbookings.views_default.inc	2008-09-27 20:35:46.406250000 +0700
@@ -10,7 +10,28 @@
  *
  */
 function publicbookings_views_default_views() {
-  return;
+  $view = publicbookings_view_schedules();
+  $views[$view->name] = $view;
+  
+  $view = publicbookings_view_schedules_admin();
+  $views[$view->name] = $view;
+  
+  $view = publicbookings_view_currently_happening();
+  $views[$view->name] = $view;
+  
+  $view = publicbookings_view_current();
+  $views[$view->name] = $view;
+  
+  $view = publicbookings_view_availability_admin();
+  $views[$view->name] = $view;
+  
+  $view = publicbookings_view_resources_admin();
+  $views[$view->name] = $view;
+  
+  $view = publicbookings_view_upcoming();
+  $views[$view->name] = $view;
+  
+  return $views;
 }
 
 function publicbookings_default_view_object() {
@@ -26,9 +47,42 @@ function publicbookings_default_view_obj
 }
 
 function publicbookings_view_schedules() {
+
   $view = publicbookings_default_view_object();
   $view->name = 'publicbookings_view_schedules';
   $view->base_table = 'bookings_schedules';
+  
+  $view->fields = array(
+    array(
+      'tablename' => 'bookings_record',
+      'field' => 'name',
+      'handler' => 'views_handler_filter_string',
+      'label' => 'Name',
+      
+    ),
+    array(
+      'tablename' => 'bookings_record',
+      'field' => 'start',
+      'handler' => 'views_handler_field_date',
+      'label' => 'Start',
+      
+    ),
+    array(
+      'tablename' => 'bookings_record',
+      'field' => 'end',
+      'handler' => 'views_handler_field_date',
+      'label' => 'End',
+      
+    ),
+    array(
+      'tablename' => 'bookings_record',
+      'field' => 'type',
+      'handler' => 'views_handler_filter_string',
+      'label' => 'Type',
+      
+    ),
+  );
+  
   $handler = $view->new_display('default', 'Defaults', 'default');
   $handler->override_option('items_per_page', 10);
   $handler->override_option('fields', array(
@@ -169,7 +223,8 @@ function publicbookings_view_schedules_a
   $view->name = 'publicbookings_view_schedules';
   $view->base_table = 'bookings_schedules';
   $handler = $view->new_display('default', 'Defaults', 'default');
-  $handler->override_option('items_per_page', 10);
+  $handler->override_option('use_pager', TRUE);
+  $handler->override_option('items_per_page', '10');
   $handler->override_option('fields', array(
     'name' => array(
       'label' => 'Name',
@@ -468,12 +523,12 @@ function publicbookings_view_availabilit
       'field' => 'end',
       'relationship' => 'none',
     ),
-    'ical_rrule' => array(
+    'rrule' => array(
       'label' => 'Repeat',
       'exclude' => 0,
-      'id' => 'ical_rrule',
+      'id' => 'rrule',
       'table' => 'bookings_records',
-      'field' => 'ical_rrule',
+      'field' => 'rrule',
       'relationship' => 'none',
     ),
     'edit_availability' => array(
