diff --git a/commons.info b/commons.info
index 8c92bf0..1c34979 100644
--- a/commons.info
+++ b/commons.info
@@ -26,7 +26,7 @@ dependencies[] = taxonomy
 dependencies[] = addressfield
 dependencies[] = addressfield_tokens
 dependencies[] = breakpoints
-dependencies[] = ckeditor
+dependencies[] = editor_ckeditor
 dependencies[] = ctools
 dependencies[] = custom_search
 dependencies[] = dialog
diff --git a/commons.install b/commons.install
index dccd9d9..8332f7f 100644
--- a/commons.install
+++ b/commons.install
@@ -900,3 +900,14 @@ function commons_update_3121() {
 
   return array();
 }
+
+/*
+ * Replace the CKEditor module with the Editor CKEditor module.
+ */
+function commons_update_3122() {
+  if (module_exists('ckeditor')) {
+    module_disable(array('ckeditor'));
+  }
+  module_enable(array('editor_ckeditor'));
+  return array();
+}
diff --git a/drupal-org-core.make b/drupal-org-core.make
index 1aaf386..5848fcc 100644
--- a/drupal-org-core.make
+++ b/drupal-org-core.make
@@ -36,3 +36,11 @@ projects[drupal][patch][] = http://drupal.org/files/issues/comment-unpublish-d7-
 ; HTML IDs are reset each time a form is processed
 ; https://www.drupal.org/node/1831560#comment-10258827
 projects[drupal][patch][] = http://drupal.org/files/issues/d7-form-html-id-1831560-14.patch
+
+; Pass $page_callback_result through hook_page_delivery_callback_alter().
+; http://drupal.org/node/897504
+projects[drupal][patch][] = "http://drupal.org/files/issues/pass-page-callback-result-897504-2.patch"
+
+; Xss filter() ignores malicious content in data-attributes and mangles image captions.
+; http://drupal.org/node/2105841
+projects[drupal][patch][] = "http://drupal.org/files/issues/do-2105841_no_protocol_filter-90.patch"
diff --git a/drupal-org.make b/drupal-org.make
index 967ecee..faf35c1 100644
--- a/drupal-org.make
+++ b/drupal-org.make
@@ -104,6 +104,10 @@ projects[diff][type] = "module"
 projects[diff][subdir] = "contrib"
 projects[diff][version] = "3.2"
 
+projects[editor][type] = "module"
+projects[editor][subdir] = "contrib"
+projects[editor][version] = "1.0-alpha4"
+
 ; Profile has no recommended release.
 projects[edit_profile][type] = "module"
 projects[edit_profile][subdir] = "contrib"
@@ -129,9 +133,12 @@ projects[entitycache][version] = "1.2"
 ; https://drupal.org/node/1349566#comment-7781063
 projects[entitycache][patch][] = "https://drupal.org/files/add-translation-information-on-each-request-1349566-12.patch"
 
+projects[entity_embed][version] = "3.x-dev"
 projects[entity_embed][type] = "module"
 projects[entity_embed][subdir] = "contrib"
-projects[entity_embed][version] = "2.0-alpha2"
+projects[entity_embed][download][type] = "git"
+projects[entity_embed][download][revision] = "ea69dc8"
+projects[entity_embed][download][branch] = "7.x-3.x"
 
 projects[entityreference][type] = "module"
 projects[entityreference][subdir] = "contrib"
diff --git a/modules/commons/commons_media/commons_media.default_entity_embed_configurations.inc b/modules/commons/commons_media/commons_media.default_entity_embed_configurations.inc
index b38c53c..6ab6280 100644
--- a/modules/commons/commons_media/commons_media.default_entity_embed_configurations.inc
+++ b/modules/commons/commons_media/commons_media.default_entity_embed_configurations.inc
@@ -19,6 +19,7 @@ function commons_media_default_entity_embed_configuration() {
   $configuration->button_label = 'File';
   $configuration->entity_type = 'file';
   $configuration->button_icon_fid = 0;
+  $configuration->display_plugins = array();
   $configurations['file'] = $configuration;
 
   return $configurations;
diff --git a/modules/commons/commons_media/commons_media.module b/modules/commons/commons_media/commons_media.module
index b98ddec..d149f69 100644
--- a/modules/commons/commons_media/commons_media.module
+++ b/modules/commons/commons_media/commons_media.module
@@ -181,34 +181,30 @@ function commons_media_page_build(&$page) {
  */
 function commons_media_filter_default_formats_alter(&$formats) {
   if (!empty($formats['filtered_html'])) {
-    // Enable Entity Embed filters.
+    // Customizations for the Entity Embed module.
     if (module_exists('entity_embed')) {
       $formats['filtered_html']['cache'] = 0;
 
       // Allow markup from embedded entities.
-      $formats['filtered_html']['filters']['filter_html']['settings']['allowed_html'] = '<a> <em> <strong> <u> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd> <h4> <h5> <h6>  <p> <br> <img> <strike> <drupal-entity>';
+      $formats['filtered_html']['filters']['filter_html']['settings']['allowed_html'] .= ' <drupal-entity>';
 
+      // Enable Entity Embed filters.
       $formats['filtered_html']['filters'] += array(
         'entity_embed' => array(
           'weight' => 2,
           'status' => 1,
           'settings' => array(),
         ),
-        'filter_align' => array(
-          'weight' => 3,
-          'status' => 1,
-          'settings' => array(),
-        ),
       );
     }
 
-    // Enable legacy Media: WYSIWYG filter.
+    // Customizations for the Media WYSIWYG module.
     if (module_exists('media_wysiwyg')) {
       // Enable the media filter.
       $formats['filtered_html']['filters'] += array(
         'media_filter' => array(
           'status' => 1,
-          'weight' => 4,
+          'weight' => 5,
         ),
       );
     }
diff --git a/modules/commons/commons_wikis/commons_wikis.module b/modules/commons/commons_wikis/commons_wikis.module
index c2ecaa7..3fbeb6e 100644
--- a/modules/commons/commons_wikis/commons_wikis.module
+++ b/modules/commons/commons_wikis/commons_wikis.module
@@ -126,7 +126,6 @@ function commons_wikis_form_commons_bw_partial_node_form_alter(&$form, &$form_st
  */
 function commons_wikis_form_commons_bw_partial_node_form_after_build($form) {
   $language = $form['body']['#language'];
-  $form['body'][$language][0]['format']['#access'] = FALSE;
   $form['body'][$language][0]['value']['#rows'] = 10;
 
   return $form;
diff --git a/modules/commons/commons_wysiwyg/commons_wysiwyg.features.filter.inc b/modules/commons/commons_wysiwyg/commons_wysiwyg.features.filter.inc
index 2ef3661..24a68f0 100644
--- a/modules/commons/commons_wysiwyg/commons_wysiwyg.features.filter.inc
+++ b/modules/commons/commons_wysiwyg/commons_wysiwyg.features.filter.inc
@@ -15,6 +15,8 @@ function commons_wysiwyg_filter_default_formats() {
     'format' => 'filtered_html',
     'name' => 'Filtered HTML',
     'cache' => 1,
+    'editor' => 'ckeditor',
+    'editor_settings' => 'a:3:{s:7:"toolbar";a:1:{i:0;a:7:{i:0;a:2:{s:4:"name";s:6:"Format";s:5:"items";a:1:{i:0;s:6:"Format";}}i:1;a:2:{s:4:"name";s:4:"Text";s:5:"items";a:2:{i:0;s:4:"Bold";i:1;s:6:"Italic";}}i:2;a:2:{s:4:"name";s:5:"Lists";s:5:"items";a:2:{i:0;s:12:"BulletedList";i:1;s:12:"NumberedList";}}i:3;a:2:{s:4:"name";s:5:"Links";s:5:"items";a:2:{i:0;s:10:"DrupalLink";i:1;s:12:"DrupalUnlink";}}i:4;a:2:{s:4:"name";s:10:"Formatting";s:5:"items";a:2:{i:0;s:12:"RemoveFormat";i:1;s:10:"Blockquote";}}i:5;a:2:{s:4:"name";s:5:"Media";s:5:"items";a:1:{i:0;s:4:"file";}}i:6;a:2:{s:4:"name";s:5:"Tools";s:5:"items";a:2:{i:0;s:6:"Source";i:1;s:8:"Maximize";}}}}s:12:"image_upload";a:5:{s:6:"status";i:0;s:6:"scheme";s:6:"public";s:9:"directory";s:13:"inline-images";s:8:"max_size";s:0:"";s:14:"max_dimensions";a:2:{s:5:"width";s:0:"";s:6:"height";s:0:"";}}s:7:"plugins";a:1:{s:5:"style";a:1:{s:10:"style_list";a:0:{}}}}',
     'status' => 1,
     'weight' => 0,
     'filters' => array(
@@ -27,6 +29,16 @@ function commons_wysiwyg_filter_default_formats() {
           'filter_html_nofollow' => 0,
         ),
       ),
+      'editor_align' => array(
+        'weight' => 3,
+        'status' => 1,
+        'settings' => array(),
+      ),
+      'editor_caption' => array(
+        'weight' => 4,
+        'status' => 1,
+        'settings' => array(),
+      ),
     ),
   );
 
@@ -35,6 +47,8 @@ function commons_wysiwyg_filter_default_formats() {
     'format' => 'full_html',
     'name' => 'Full HTML',
     'cache' => 1,
+    'editor' => '',
+    'editor_settings' => 'a:0:{}',
     'status' => 1,
     'weight' => 1,
     'filters' => array(),
diff --git a/modules/commons/commons_wysiwyg/commons_wysiwyg.info b/modules/commons/commons_wysiwyg/commons_wysiwyg.info
index 09f9c7f..d1a044b 100644
--- a/modules/commons/commons_wysiwyg/commons_wysiwyg.info
+++ b/modules/commons/commons_wysiwyg/commons_wysiwyg.info
@@ -3,7 +3,8 @@ description = Provides a rich text editor for content creation.
 package = Commons - Building blocks
 core = 7.x
 
-dependencies[] = ckeditor
+dependencies[] = editor
+dependencies[] = editor_ckeditor
 dependencies[] = features
 dependencies[] = filter
 dependencies[] = strongarm
diff --git a/modules/commons/commons_wysiwyg/commons_wysiwyg.install b/modules/commons/commons_wysiwyg/commons_wysiwyg.install
index fa07212..4b90e11 100644
--- a/modules/commons/commons_wysiwyg/commons_wysiwyg.install
+++ b/modules/commons/commons_wysiwyg/commons_wysiwyg.install
@@ -34,3 +34,14 @@ function commons_wysiwyg_update_3102() {
   features_revert($revert);
   return array();
 }
+
+/**
+ * Add editor settings to text filters.
+ */
+function commons_wysiwyg_update_3103() {
+  $revert = array(
+    'commons_wysiwyg' => array('filter'),
+  );
+  features_revert($revert);
+  return array();
+}
diff --git a/modules/commons/commons_wysiwyg/commons_wysiwyg.module b/modules/commons/commons_wysiwyg/commons_wysiwyg.module
index 6cc147a..6fbf987 100644
--- a/modules/commons/commons_wysiwyg/commons_wysiwyg.module
+++ b/modules/commons/commons_wysiwyg/commons_wysiwyg.module
@@ -4,51 +4,3 @@
  * @file
  * Provides the ability to edit content using a WYSIWYG editor.
  */
-
-/**
- * Implements hook_element_info_alter().
- *
- * Simplify the content editing UI by removing filter format selection and tips.
- */
-function commons_wysiwyg_element_info_alter(&$type) {
-  $type['text_format']['#pre_render'][] = 'commons_wysiwyg_process_filter_format';
-}
-
-/**
- * Callback function to remove format selection and tips from text_formats.
- *
- * @see http://drupal.org/node/1949552
- */
-function commons_wysiwyg_process_filter_format($element) {
-  // Verify that the element has a filter format.
-  if (!isset($element['format'])) {
-    return $element;
-  }
-
-  $field = &$element['value'];
-
-  // Verify that the element can contain a value.
-  if (!isset($field['#value'])) {
-    return $element;
-  }
-
-  global $user;
-  $account = $user;
-
-  // Privileged users should be able to view and modify filter formats.
-  if (user_access('administer filters', $account)) {
-    return $element;
-  }
-
-  // Determine which filter formats a user has access to.
-  $formats = filter_formats($account);
-
-  // If the user is given a choice between formats, default to filtered_html if
-  // it is available.
-  if (count($formats) >= 2 && array_key_exists('filtered_html', $formats)) {
-    $element['format']['#access'] = FALSE;
-    $element['#format'] = 'filtered_html';
-  }
-
-  return $element;
-}
