diff --git a/includes/registration.entity.inc b/includes/registration.entity.inc
index 1f2c250..ebbdc67 100644
--- a/includes/registration.entity.inc
+++ b/includes/registration.entity.inc
@@ -297,7 +297,7 @@ class Registration extends Entity {
       elseif ($this->user_uid) {
         return REGISTRATION_REGISTRANT_TYPE_USER;
       }
-      elseif (!empty($this->anon_mail)) {
+      else {
         return REGISTRATION_REGISTRANT_TYPE_ANON;
       }
     }
@@ -499,9 +499,6 @@ function registration_property_email_set(Registration $registration, $name, $val
  */
 function registration_get_properties($entity, array $options, $name, $type) {
   switch ($name) {
-    case 'anon_mail':
-      return $entity->anon_mail;
-      break;
     case 'entity':
       return entity_metadata_wrapper($entity->entity_type, $entity->entity);
       break;
@@ -691,11 +688,7 @@ function registration_get_types($name = NULL) {
  */
 function registration_type_get_names($name = NULL) {
   $types = registration_get_types();
-  $data = array();
-  foreach (array_keys($types) as $name) {
-    $data[$name] = $name;
-  }
-  return $data;
+  return is_array($types) ? array_keys($types) : array();
 }
 
 /**
diff --git a/includes/registration.forms.inc b/includes/registration.forms.inc
index 1dac221..8b43748 100644
--- a/includes/registration.forms.inc
+++ b/includes/registration.forms.inc
@@ -102,21 +102,19 @@ function registration_form($form, &$form_state, Registration $registration) {
   $options = array();
   $default_state = -1;
   $states = registration_states(array('show_on_form' => TRUE));
-  // we use "$this_state" variable name because $state is conflicting with variable set above.
-  foreach ($states as $this_state) {
-    $options[$this_state->registration_state_id] = t('@state', array('@state' => $this_state->label));
-    if ($this_state->default_state) {
-      $default_state = $this_state->registration_state_id;
+  foreach ($states as $state) {
+    $options[$state->registration_state_id] = t('@state', array('@state' => $state->label));
+    if ($state->default_state) {
+      $default_state = $state->registration_state_id;
     }
   }
-  
   $form['state'] = array(
     '#type' => 'select',
     '#title' => t('State'),
     '#description' => t('State of this registration'),
     '#default_value' => ($state ? $state->internalIdentifier() : $default_state),
     '#options' => $options,
-    '#access' => !empty($states) && user_access('edit ' . $registration->type . ' registration state')
+    '#access' => !empty($states)
   );
 
   field_attach_form('registration', $registration, $form, $form_state);
@@ -171,8 +169,10 @@ function registration_form_validate($form, &$form_state) {
   // validate according to who's registering
   switch ($form_state['values']['who_is_registering']) {
     case REGISTRATION_REGISTRANT_TYPE_ANON:
-      if (!valid_email_address($form_state['values']['anon_mail'])) {
-        form_set_error('anon_mail', t('The email address is invalid.'));
+      if ($form['anon_mail']['#required']) {
+        if (!valid_email_address($form_state['values']['anon_mail'])) {
+          form_set_error('anon_mail', t('The email address is invalid.'));
+        }
       }
       if (registration_is_registered($registration, $form_state['values']['anon_mail'])) {
         form_set_error('anon_mail', t('%mail is already registered for this event.',
@@ -212,12 +212,10 @@ function registration_form_submit($form, &$form_state) {
   if (!isset($registration->registration_id)) {
     $registration->author_uid = $GLOBALS['user']->uid;
   }
-  $registration->count = $form_state['values']['count'];
 
-  if (user_access('edit ' . $registration->type . ' registration state')) {
-    $registration->state = (!empty($form_state['values']['state']))
-      ? $form_state['values']['state'] : NULL;
-  }
+  $registration->count = $form_state['values']['count'];
+  $registration->state = (!empty($form_state['values']['state']))
+    ? $form_state['values']['state'] : NULL;
 
   switch ($form_state['values']['who_is_registering']) {
     case REGISTRATION_REGISTRANT_TYPE_ANON:
diff --git a/includes/registration_type.admin.inc b/includes/registration_type.admin.inc
index 29fccd5..74d93e8 100644
--- a/includes/registration_type.admin.inc
+++ b/includes/registration_type.admin.inc
@@ -68,5 +68,5 @@ function registration_type_form_submit(&$form, &$form_state) {
  * Form API submit callback for the delete button.
  */
 function registration_type_form_submit_delete(&$form, &$form_state) {
-  $form_state['redirect'] = 'admin/structure/registration/registration_types/manage/' . $form_state['registration_type']->name . '/delete';
+  $form_state['redirect'] = 'admin/structure/registration/registration_types/manage/' . $form_state['registration_type']->type . '/delete';
 }
diff --git a/registration.module b/registration.module
index a5e3957..89fd7c0 100644
--- a/registration.module
+++ b/registration.module
@@ -279,9 +279,6 @@ function registration_permission_list($info) {
     "create $type registration other anonymous" => array(
       'title' => t('%type_name: Register other people', array('%type_name' => $label)),
     ),
-    "edit $type registration state" => array(
-      'title' => t('%type_name: Edit registration state', array('%type_name' => $label)),
-    ),
   );
 }
 
@@ -829,27 +826,29 @@ function registration_send_broadcast($entity_type, $entity_id, $subject, $messag
     // send the email to each registrant and communicate results
     $success_count = 0;
     foreach ($registrations as $registration) {
-      $recipients[] = $registration->mail;
-
-      $entity = entity_load_single($entity_type, $entity_id);
-      if (module_exists('token')) {
-        $message = token_replace($message_template, array(
-          $entity_type => $entity,
-          'registration' => $registration
-        ));
-      }
-      $params['message'] = $message;
-
-      $result = drupal_mail('registration', 'broadcast',
-        $registration->mail, $language, $params, $from
-      );
-      if ($result['result']) {
-        $success_count++;
-      }
-      else {
-        watchdog('registration', 'Failed to send registration broadcast email to %email.',
-          array('%email' => $registration->mail), WATCHDOG_ERROR
+      if ($registration->mail) {
+        $recipients[] = $registration->mail;
+		  
+        $entity = entity_load_single($entity_type, $entity_id);
+        if (module_exists('token')) {
+          $message = token_replace($message_template, array(
+            $entity_type => $entity,
+            'registration' => $registration
+          ));
+        }
+        $params['message'] = $message;
+		  
+        $result = drupal_mail('registration', 'broadcast',
+          $registration->mail, $language, $params, $from
         );
+        if ($result['result']) {
+          $success_count++;
+        }
+        else {
+          watchdog('registration', 'Failed to send registration broadcast email to %email.',
+            array('%email' => $registration->mail), 'WATCHDOG_ERROR'
+          );
+        }
       }
     }
 
