diff --git a/path_breadcrumbs.module b/path_breadcrumbs.module
index 526a965..9e69bfb 100644
--- a/path_breadcrumbs.module
+++ b/path_breadcrumbs.module
@@ -339,7 +339,7 @@ function path_breadcrumbs_breadcrumb($variables) {
     }
 
     // Add options for rich snippets.
-    $elem_tag = 'span';
+    $elem_tag = 'li';
     $elem_property = '';
     $root_property = '';
     $options = array('html' => TRUE);
@@ -347,22 +347,27 @@ function path_breadcrumbs_breadcrumb($variables) {
     if ($snippet == PATH_BREADCRUMBS_RICH_SNIPPETS_RDFA) {
 
       // Add link options for RDFa support.
-      $options['attributes'] = array('rel' => 'v:url', 'property' => 'v:title');
+      $options['attributes'] = array(
+        'property' => 'ListItem',
+        'typeof'   => 'WebPage',
+      );
       $options['absolute'] = TRUE;
 
       // Set correct properties for RDFa support.
-      $elem_property = ' typeof="v:Breadcrumb"';
-      $root_property = ' xmlns:v="http://rdf.data-vocabulary.org/#"';
+      $elem_property = ' property="itemListElement" typeof="ListItem"';
+      $root_property = ' vocab="http://schema.org/" typeof="BreadcrumbList"';
     }
     elseif ($snippet == PATH_BREADCRUMBS_RICH_SNIPPETS_MICRODATA) {
 
       // Add link options for microdata support.
-      $options['attributes'] = array('itemprop' => 'url');
+      $options['attributes'] = array('itemprop' => 'item');
       $options['absolute'] = TRUE;
 
       // Set correct properties for microdata support.
-      $elem_property = ' itemscope itemtype="http://data-vocabulary.org/Breadcrumb"';
-      $elem_tag = 'div';
+      $elem_property = ' itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"';
+      $elem_tag = 'li';
+
+      $root_property = ' itemscope itemtype="http://schema.org/BreadcrumbList"';
 
       // Add style that will display breadcrumbs wrapped in <div> inline.
       drupal_add_css(drupal_get_path('module', 'path_breadcrumbs') . '/css/path_breadcrumbs.css');
@@ -425,10 +430,16 @@ function path_breadcrumbs_breadcrumb($variables) {
 
       // Get breadcrumb title from a link like "<a href = "/path">title</a>".
       $title = trim(strip_tags($breadcrumb));
+      $meta = '';
 
       // Wrap title in additional element for microdata support.
       if ($snippet == PATH_BREADCRUMBS_RICH_SNIPPETS_MICRODATA) {
-        $title = '<span itemprop="title">' . $title . '</span>';
+        $title = '<span itemprop="name">' . $title . '</span>';
+        $meta .= '<meta itemprop="position" content="' . ($key + 1) . '">';
+      }
+      elseif ($snippet == PATH_BREADCRUMBS_RICH_SNIPPETS_RDFA) {
+        $title = '<span property="name">' . $title . '</span>';
+        $meta .= '<meta property="position" content="' . ($key + 1) . '">';
       }
 
       // Support title attribute.
@@ -446,14 +457,15 @@ function path_breadcrumbs_breadcrumb($variables) {
 
       // Build new text or link breadcrumb.
       $new_breadcrumb = !empty($href) ? l($title, $href, $options) : $title;
-
       // Replace old breadcrumb link with a new one.
-      $breadcrumbs[$key] = '<' . $elem_tag . ' class="' . implode(' ', $classes) . '"' . $elem_property . '>' . $new_breadcrumb . '</' . $elem_tag . '>';
+      $breadcrumbs[$key] = '<' . $elem_tag . ' class="' . implode(' ', $classes) . '"' . $elem_property . '>' . $new_breadcrumb . $meta . '</' . $elem_tag . '>';
     }
 
     // Get breadcrumb delimiter and wrap it into <span> for customization.
-    $delimiter = check_plain(variable_get('path_breadcrumbs_delimiter', '»'));
-    $delimiter = '<span class="delimiter">' . trim($delimiter) . '</span>';
+    $delimiter = variable_get('path_breadcrumbs_delimiter');
+    if ($delimiter) {
+      $delimiter = '<span class="delimiter">' . trim($delimiter) . '</span>';
+    }
 
     $classes = array('breadcrumb');
 
@@ -468,9 +480,13 @@ function path_breadcrumbs_breadcrumb($variables) {
       $prefix = drupal_render($contextual_links);
       $classes[] = 'contextual-links-region';
     }
+    $crumbs_amount = variable_get('path_breadcrumbs_display_amount', FALSE);
+    if ($crumbs_amount) {
+      $classes[] = 'breadcrumbs-amount-' . count($breadcrumbs);
+    }
 
     // Build final version of breadcrumb's HTML output.
-    $output .= '<div class="' . implode(' ', $classes) . '"' . $root_property . '>' . $prefix . implode(" $delimiter ", $breadcrumbs) . '</div>';
+    $output .= '<ol class="' . implode(' ', $classes) . '"' . $root_property . '>' . $prefix . implode(" $delimiter ", $breadcrumbs) . '</ol>';
 
     return $output;
   }
