diff --git a/metatag_facebook/metatag_facebook.module b/metatag_facebook/metatag_facebook.module
index 5ecdf50..d4942cb 100644
--- a/metatag_facebook/metatag_facebook.module
+++ b/metatag_facebook/metatag_facebook.module
@@ -13,6 +13,13 @@ function metatag_facebook_ctools_plugin_api($owner, $api) {
   }
 }
 
+/**
+ * Implements hook_preprocess_html().
+ */
+function metatag_facebook_preprocess_html(&$variables) {
+  $variables['rdf_namespaces'] .= "\n  xmlns:fb=\"http://ogp.me/ns/fb#\"";
+}
+
 /*
 fb:admins
 fb:app_id
diff --git a/metatag_opengraph/metatag_opengraph.metatag.inc b/metatag_opengraph/metatag_opengraph.metatag.inc
index c1101be..d2297e8 100644
--- a/metatag_opengraph/metatag_opengraph.metatag.inc
+++ b/metatag_opengraph/metatag_opengraph.metatag.inc
@@ -40,8 +40,11 @@ function metatag_opengraph_metatag_bundled_config_alter(array &$configs) {
 
       case 'node':
         $config->config += array(
+          'article:modified_time' => array('value' => '[node:changed:custom:c]'),
+          'article:published_time' => array('value' => '[node:created:custom:c]'),
           'og:description' => array('value' => '[node:summary]'),
           'og:title' => array('value' => '[node:title]'),
+          'og:updated_time' => array('value' => '[node:changed:custom:c]'),
         );
         break;
 
@@ -56,6 +59,7 @@ function metatag_opengraph_metatag_bundled_config_alter(array &$configs) {
         $config->config += array(
           'og:title' => array('value' => '[user:name]'),
           'og:type' => array('value' => 'profile'),
+          'profile:username' => array('value' => '[user:name]'),
         );
         if (variable_get('user_pictures')) {
           $config->config += array(
@@ -104,6 +108,25 @@ function metatag_opengraph_metatag_info() {
     'weight' => ++$weight,
   ) + $tag_info_defaults;
 
+  $info['tags']['og:determiner'] = array(
+    'label' => t('Determiner'),
+    'description' => t("The word that appears before the content's title in a sentence. The default ignores this value, the 'Automatic' value should be sufficient if this is actually needed."),
+    'weight' => ++$weight,
+    'form' => array(
+      '#type' => 'select',
+      '#options' => array(
+        'auto' => 'Automatic',
+        'a' => 'A',
+        'an' => 'An',
+        'the' => 'The',
+      ),
+      '#empty_option' => t('- Ignore -'),
+    ),
+    'devel_generate' => array(
+      'type' => 'select',
+    ),
+  ) + $tag_info_defaults;
+
   $info['tags']['og:description'] = array(
     'label' => t('Open Graph description'),
     'description' => t('A one to two sentence description of your page.'),
@@ -119,6 +142,9 @@ function metatag_opengraph_metatag_info() {
       '#options' => _metatag_opengraph_type_options(),
       '#empty_option' => t('- None -'),
     ),
+    'devel_generate' => array(
+      'type' => 'select',
+    ),
   ) + $tag_info_defaults;
 
   if (module_exists('select_or_other')) {
@@ -130,19 +156,32 @@ function metatag_opengraph_metatag_info() {
     $info['tags']['og:type']['form']['#element_validate'] = array('select_or_other_element_validate');
   }
 
+  // Basic tags.
+  $info['tags']['og:updated_time'] = array(
+    'label' => t('Content modification date & time'),
+    'description' => t("The date this content was last modified, with an optional time value. Needs to be in <a href='http://en.wikipedia.org/wiki/ISO_8601'>ISO 8601</a> format. Can be the same as the 'Article modification date' tag."),
+    'weight' => ++$weight,
+  ) + $tag_info_defaults;
+
+  $info['tags']['og:see_also'] = array(
+    'label' => t('See also'),
+    'description' => t('URLs to related content.'),
+    'multiple' => TRUE,
+    'weight' => ++$weight,
+  ) + $tag_info_defaults;
+
   $info['tags']['og:image'] = array(
-    'label' => t('Open Graph image'),
-    'description' => t('An image URL which should represent your object within the graph. The image must be at least 50px by 50px and have a maximum aspect ratio of 3:1. Supports PNG, JPEG and GIF formats.'),
+    'label' => t('Image URL'),
+    'description' => t('The URL of an image which should represent your object within the graph. The image must be at least 50px by 50px and have a maximum aspect ratio of 3:1. Supports PNG, JPEG and GIF formats.'),
     'multiple' => TRUE,
     'weight' => ++$weight,
     'devel_generate' => array(
       'type' => 'image',
     ),
   ) + $tag_info_defaults;
-
   $info['tags']['og:image:secure_url'] = array(
-    'label' => t('Open Graph secure image'),
-    'description' => t('A secure (HTTPS) image URL which should represent your object within the graph. The image must be at least 50px by 50px and have a maximum aspect ratio of 3:1. Supports PNG, JPEG and GIF formats. All "http://" URLs will automatically be converted to "https://".'),
+    'label' => t('Secure image URL'),
+    'description' => t('The secure URL (HTTPS) of an image which should represent your object within the graph. The image must be at least 50px by 50px and have a maximum aspect ratio of 3:1. Supports PNG, JPEG and GIF formats. All "http://" URLs will automatically be converted to "https://".'),
     'multiple' => TRUE,
     'secure' => TRUE,
     'weight' => ++$weight,
@@ -150,6 +189,30 @@ function metatag_opengraph_metatag_info() {
       'type' => 'image',
     ),
   ) + $tag_info_defaults;
+  $info['tags']['og:image:type'] = array(
+    'label' => t('Image type'),
+    'description' => t('The type of image referenced above. Should be either "image/gif" for a GIF image, "image/jpeg" for a JPG/JPEG image, or "image/png" for a PNG image.'),
+    'multiple' => TRUE,
+    'weight' => ++$weight,
+  ) + $tag_info_defaults;
+  $info['tags']['og:image:width'] = array(
+    'label' => t('Image width'),
+    'description' => t('The width of the above image(s). Note: if both the unsecured and secured images are provided, they should both be the same size.'),
+    'multiple' => TRUE,
+    'weight' => ++$weight,
+    'devel_generate' => array(
+      'type' => 'image',
+    ),
+  ) + $tag_info_defaults;
+  $info['tags']['og:image:height'] = array(
+    'label' => t('Image height'),
+    'description' => t('The height of the above image(s). Note: if both the unsecured and secured images are provided, they should both be the same size.'),
+    'multiple' => TRUE,
+    'weight' => ++$weight,
+    'devel_generate' => array(
+      'type' => 'image',
+    ),
+  ) + $tag_info_defaults;
 
   $info['tags']['og:url'] = array(
     'label' => t('Open Graph URL'),
@@ -272,6 +335,73 @@ function metatag_opengraph_metatag_info() {
       ),
       '#empty_option' => t('- None -'),
     ),
+    'devel_generate' => array(
+      'type' => 'select',
+    ),
+  ) + $tag_info_defaults;
+
+  // For the "article" og:type.
+  $info['tags']['article:publisher'] = array(
+    'label' => t('Open Graph article publisher'),
+    'description' => t("Links an article to a publisher's Facebook page."),
+    'weight' => ++$weight,
+  ) + $tag_info_defaults;
+
+  $info['tags']['article:author'] = array(
+    'label' => t('Open Graph article author'),
+    'description' => t("Links an article to an author's Facebook profile, should be either URLs to the author's profile page or their Facebook profile IDs."),
+    'multiple' => TRUE,
+    'weight' => ++$weight,
+  ) + $tag_info_defaults;
+
+  $info['tags']['article:section'] = array(
+    'label' => t('Section'),
+    'description' => t('The primary section of this website the content belongs to.'),
+    'weight' => ++$weight,
+  ) + $tag_info_defaults;
+
+  $info['tags']['article:tag'] = array(
+    'label' => t('Tag(s)'),
+    'description' => t('Appropriate keywords for this content.'),
+    'multiple' => TRUE,
+    'weight' => ++$weight,
+  ) + $tag_info_defaults;
+
+  $info['tags']['article:published_time'] = array(
+    'label' => t('Publication date & time'),
+    'description' => t("The date this content was published on, with an optional time value. Needs to be in <a href='http://en.wikipedia.org/wiki/ISO_8601'>ISO 8601</a> format."),
+    'weight' => ++$weight,
+  ) + $tag_info_defaults;
+
+  $info['tags']['article:modified_time'] = array(
+    'label' => t('Article modification date & time'),
+    'description' => t("The date this content was last modified, with an optional time value. Needs to be in <a href='http://en.wikipedia.org/wiki/ISO_8601'>ISO 8601</a> format."),
+    'weight' => ++$weight,
+  ) + $tag_info_defaults;
+
+  $info['tags']['article:expiration_time'] = array(
+    'label' => t('Expiration date & time'),
+    'description' => t("The date this content will expire, with an optional time value. Needs to be in <a href='http://en.wikipedia.org/wiki/ISO_8601'>ISO 8601</a> format."),
+    'weight' => ++$weight,
+  ) + $tag_info_defaults;
+
+  // For the "profile" og:type.
+  $info['tags']['profile:first_name'] = array(
+    'label' => t('First name'),
+    'weight' => ++$weight,
+  ) + $tag_info_defaults;
+  $info['tags']['profile:last_name'] = array(
+    'label' => t('Last name'),
+    'weight' => ++$weight,
+  ) + $tag_info_defaults;
+  $info['tags']['profile:username'] = array(
+    'label' => t('Username'),
+    'weight' => ++$weight,
+  ) + $tag_info_defaults;
+  $info['tags']['profile:gender'] = array(
+    'label' => t('Gender'),
+    'description' => t("Any of Facebook's allowed gender values should be allowed, the initial two being 'male' and 'female'."),
+    'weight' => ++$weight,
   ) + $tag_info_defaults;
 
   return $info;
diff --git a/metatag_opengraph/metatag_opengraph.module b/metatag_opengraph/metatag_opengraph.module
index 67c3457..1f43103 100644
--- a/metatag_opengraph/metatag_opengraph.module
+++ b/metatag_opengraph/metatag_opengraph.module
@@ -9,6 +9,11 @@ function metatag_opengraph_preprocess_html(&$variables) {
   if (!module_exists('rdf')) {
     $variables['rdf_namespaces'] .= "\n  xmlns:og=\"http://ogp.me/ns#\"";
   }
+
+  // Need an extra namespace for the "article" tags.
+  $variables['rdf_namespaces'] .= "\n  xmlns:article=\"http://ogp.me/ns/article#\"";
+  // Need an extra namespace for the "profile" tags.
+  $variables['rdf_namespaces'] .= "\n  xmlns:profile=\"http://ogp.me/ns/profile#\"";
 }
 
 /**
