diff --git a/email.module b/email.module
old mode 100644
new mode 100755
index 8aaa1fd..c9fc295
--- a/email.module
+++ b/email.module
@@ -12,18 +12,12 @@ function email_field_info() {
       'default_widget' => 'email_textfield',
       'default_formatter' => 'email_default',
       'property_type' => 'text',
+      'microdata' => TRUE,
     ),
   );
 }
 
 /**
- * Implements hook_migrate_api().
- */
-function email_migrate_api() {
-  return array('api' => 2);
-}
-
-/**
  * Implements hook_field_validate().
  *
  * Possible error codes:
@@ -104,7 +98,8 @@ function email_field_formatter_view($object_type, $object, $field, $instance, $l
       }
       break;
 
-    case 'email_contact':
+    case 'email_contact':
+      unset($object->microdata[$field['field_name']]['#attributes']['itemprop']);
       $ids = entity_extract_ids($object_type, $object);
       foreach ($items as $delta => $item) {
         $element[$delta] = array('#markup' => l(t('Contact person by email'), 'email/' . $object_type . '/' . $ids[0] . '/' . $instance['field_name']));
@@ -119,10 +114,11 @@ function email_field_formatter_view($object_type, $object, $field, $instance, $l
       }
       break;
 
-    case 'email_spamspan':
+    case 'email_spamspan':
+      unset($object->microdata[$field['field_name']]['#attributes']['itemprop']);
       foreach ($items as $delta => $item) {
         if (module_exists('spamspan')) {
-          $element[$delta] = array('#markup' => spamspan($item['email']));
+          $element[$delta] = spamspan($item['email']);
         }
         else {
           $output = l($item['email'], 'mailto:' . $item['email']);
@@ -211,13 +207,15 @@ function email_mail_page($object_type, $object_id, $field_name) {
   global $user;
 
   if (!is_numeric($object_id)) {
-    return MENU_NOT_FOUND;
+    drupal_not_found();
+    return;
   }
 
   //verify this is an email field
   $field_info = field_info_field($field_name);
-  if (!isset($field_info) || $field_info['type'] != 'email') {
-    return MENU_NOT_FOUND;
+  if ($field_info['type'] != 'email') {
+    drupal_not_found();
+    return;
   }
 
   $objects = entity_load($object_type, array($object_id));
@@ -225,12 +223,16 @@ function email_mail_page($object_type, $object_id, $field_name) {
 
   //verify the object really exists
   if (!$object) {
-    return MENU_NOT_FOUND;
+    drupal_not_found();
+    return;
   }
 
-  // Check for field access.
-  if (!field_access('view', $field_info, $object_type, $object, $user)) {
-    return MENU_ACCESS_DENIED;
+  //check field perm
+  if (module_exists('field_permissions')) {
+    if (!field_permissions_field_access('view', $field_info, $object_type, $object, $user)) {
+      drupal_not_found();
+      return;
+    }
   }
 
   //use the first email address as receiver
@@ -244,7 +246,8 @@ function email_mail_page($object_type, $object_id, $field_name) {
 
   //verify that the email address is not empty
   if (empty($email)) {
-    return MENU_NOT_FOUND;
+    drupal_not_found();
+    return;
   }
 
   $entity_info = entity_extract_ids($object_type, $object);
@@ -257,7 +260,8 @@ function email_mail_page($object_type, $object_id, $field_name) {
     }
   }
   if (!$found) {
-    return MENU_NOT_FOUND;
+    drupal_not_found();
+    return;
   }
 
   if (!flood_is_allowed('email', variable_get('email_hourly_threshold', 3))) {
