diff --git a/includes/registration.field.inc b/includes/registration.field.inc
index 41a6170..d625dfa 100644
--- a/includes/registration.field.inc
+++ b/includes/registration.field.inc
@@ -235,7 +235,9 @@ function registration_field_formatter_view($entity_type, $entity, $field, $insta
       case 'registration_form':
         // Enable registration link if accessible.
         list($entity_id) = entity_extract_ids($entity_type, $entity);
-        if (registration_register_page_access($entity_type, $entity) && registration_status($entity_type, $entity_id)) {
+        // Allow Theme field_registration() to handle the customized text for the differnt registration status that can occur in wait list mode.
+        if (registration_register_page_access($entity_type, $entity) || module_exists('registration_waitlist')) {
+          // has access to create new registration regardless of registration_status($entity_type, $entity_id)) is TRUE or FALSE
           $registration = entity_get_controller('registration')->create(array(
             'entity_type' => $entity_type,
             'entity_id' => $entity_id,
diff --git a/modules/registration_waitlist/registration_waitlist.module b/modules/registration_waitlist/registration_waitlist.module
index 16cce9f..3ea8525 100644
--- a/modules/registration_waitlist/registration_waitlist.module
+++ b/modules/registration_waitlist/registration_waitlist.module
@@ -95,7 +95,9 @@ function registration_waitlist_entity_presave($entity, $type) {
         // Check that the old state (if there is one) is not already active
         if ((isset($entity->original) && !in_array($entity->original->state, $active_states))
           || (!isset($entity->original)) ) {
-          drupal_set_message(t('Registration placed on the wait list.'), 'status');
+          if (isset($entity->is_new) && $entity->is_new) {
+            drupal_set_message(t('Registration placed on the wait list.'), 'status');
+          }
 
           // Set the registration state to waitlist
           $waitlist_state = registration_get_states(REGISTRATION_WAITLIST_STATE);
@@ -107,8 +109,7 @@ function registration_waitlist_entity_presave($entity, $type) {
 }
 
 /**
- * Determine if the waitlist is active for a given registration
- *
+ * Determine if the waitlist is active for a given registration; it is active if it can accomodate new registration on the wait list.
  * @param $entity_type
  * @param $entity_id
  * @param $settings
@@ -119,13 +120,13 @@ function registration_waitlist_is_active($entity_type, $entity_id, &$errors = ar
   $settings = registration_entity_settings($entity_type, $entity_id);
   $active = FALSE;
   $capacity = $settings['capacity'];
-  
+
   // Not unlimited capacity
-  if ($capacity
-    && isset($settings['settings']['registration_waitlist_enable'])
-    && $settings['settings']['registration_waitlist_enable']) {
+  if ($capacity && isset($settings['settings']['registration_waitlist_enable']) && $settings['settings']['registration_waitlist_enable']) {
 
-    if (in_array(t('insufficient spaces remaining'), $errors)) {
+    $full_state = t('Insufficient spaces remaining.');
+    
+    if (in_array($full_state, $errors)) {
       $active = TRUE;
     }
 
@@ -134,15 +135,8 @@ function registration_waitlist_is_active($entity_type, $entity_id, &$errors = ar
 
     // We only need to check how many people are on the waitlist if there is a capacity other than 0 set
     if ($active && $waitlist_capacity) {
-      $waitlist_state = registration_get_states(REGISTRATION_WAITLIST_STATE);
-      // get count of registrations with the waitlist state
-      $query = db_select('registration', 'r');
-      $query->addExpression('sum(count)', 'count');
-      $query->condition('entity_id', $entity_id);
-      $query->condition('entity_type', $entity_type);
-      $query->condition('state', $waitlist_state->identifier());
-      $result = $query->execute();
-      $waitlist_count = $result->fetchField();
+
+      $waitlist_count = registration_waitlist_event_count($entity_type, $entity_id, TRUE);
       $waitlist_count = ($waitlist_count == '') ? 0 : $waitlist_count;
 
       if (($waitlist_capacity - $waitlist_count) < 1) {
@@ -154,3 +148,33 @@ function registration_waitlist_is_active($entity_type, $entity_id, &$errors = ar
 
   return $active;
 }
+
+
+/**
+ * Determines current number of spaces filled on the wait list entity.
+ *
+ * @param string $entity_type
+ *   The host entity type.
+ * @param int $entity_id
+ *   The host entity ID.
+ *
+ * @return int
+ *   The number of spaces filled in the wait list for entity.
+ *
+ */
+function registration_waitlist_event_count($entity_type, $entity_id, $reset = FALSE) {
+  $count = &drupal_static(__FUNCTION__ . '_' . $entity_type . '_' . $entity_id, FALSE);
+  if (!$count || $reset) {
+    $waitlist_state = registration_get_states(REGISTRATION_WAITLIST_STATE);
+    $query = db_select('registration', 'r');
+    $query->addExpression('sum(count)', 'count');
+    $query->condition('entity_id', $entity_id);
+    $query->condition('entity_type', $entity_type);
+    $query->condition('state', $waitlist_state->identifier());
+    $result = $query->execute();
+    $count = $result->fetchField();
+    $count = ($count == '') ? 0 : $count;
+  }
+  drupal_alter('registration_waitlist_event_count', $count);
+  return $count;
+}
diff --git a/registration.module b/registration.module
index 32e2eb4..68ebb57 100644
--- a/registration.module
+++ b/registration.module
@@ -672,11 +672,26 @@ function registration_registrations_page($entity_type, $entity) {
       'rows' => $rows
     );
     if ($settings['capacity'] != 0) {
-      $table['caption'] = t('List of registrations for %title. !count of !capacity spaces are filled.', array(
-        '%title' => $label,
-        '!count' => '<strong>' . registration_event_count($entity_type, $entity_id) . '</strong>',
-        '!capacity' => '<strong>' . $settings['capacity'] . '</strong>'
-      ));
+      if (isset($settings['settings']['registration_waitlist_enable']) && $settings['settings']['registration_waitlist_enable']) {
+        if (isset($settings['settings']['registration_waitlist_capacity'])         
+          && $settings['settings']['registration_waitlist_capacity'] != 0) {
+      	  $table['caption'] = t('List of registrations: !count of !capacity spaces are filled.<br>Waitlist enabled with !waitlistcount of !waitlistcapacity spaces are filled.', array(
+       	    '%title' => $label,
+            '!count' => '<strong>' . registration_event_count($entity_type, $entity_id) . '</strong>',
+            '!capacity' => '<strong>' . $settings['capacity'] . '</strong>',
+            '!waitlistcount' => '<strong>' . registration_waitlist_event_count($entity_type, $entity_id) . '</strong>',
+            '!waitlistcapacity' => '<strong>' . $settings['settings']['registration_waitlist_capacity'] . '</strong>'
+          ));
+        }
+        else {
+      	  $table['caption'] = t('List of registrations for %title. !count of !capacity spaces are filled.<br>Waitlist enabled with !waitlistcount spaces filled.', array(
+       	    '%title' => $label,
+            '!count' => '<strong>' . registration_event_count($entity_type, $entity_id) . '</strong>',
+            '!capacity' => '<strong>' . $settings['capacity'] . '</strong>',
+            '!waitlistcount' => '<strong>' . registration_waitlist_event_count($entity_type, $entity_id) . '</strong>',
+          ));
+        }
+      }
     }
     else {
       $table['caption'] = t('List of registrations for %title. !count spaces are filled.', array(
@@ -814,7 +829,7 @@ function registration_entity_update($entity, $entity_type) {
 }
 
 /**
- * Sets the the registration entity settings to the deafults.
+ * Sets the the registration entity settings to the defaults.
  *
  * @param $entity_type
  * @param $entity
@@ -1248,7 +1263,7 @@ function registration_status($entity_type, $entity_id, $reset = FALSE, $spaces =
     'errors' => $errors,
   );
 
-  return $status;
+  return $checked;
 }
 
 /**
@@ -1935,3 +1950,12 @@ function registration_type_delete(RegistrationType $type) {
 function registration_state_access($op, $entity = NULL, $account = NULL, $entity_type = NULL) {
   return user_access('administer registration states', $account);
 }
+
+/**
+ * Implements hook_registration_access().
+ */
+function registration_registration_access($op, $registration, $account = NULL) {
+  if ($registration->user_uid == $account->uid) {
+    return TRUE;
+  } 
+}
\ No newline at end of file
