diff --git a/commons.profile b/commons.profile
index a419f65..a039d56 100644
--- a/commons.profile
+++ b/commons.profile
@@ -5,6 +5,44 @@
  */
 
 /**
+ * Implements hook_install_tasks_alter().
+ */
+function commons_install_tasks_alter(&$tasks, $install_state) {
+  global $install_state;
+
+  // Skip profile selection step.
+  $tasks['install_select_profile']['display'] = FALSE;
+
+  // Skip language selection install step and default language to English.
+  $tasks['install_select_locale']['display'] = FALSE;
+  $tasks['install_select_locale']['run'] = INSTALL_TASK_SKIP;
+  $install_state['parameters']['locale'] = 'en';
+
+  // Override "install_finished" task to redirect people to home page.
+  $tasks['install_finished']['function'] = 'commons_install_finished';
+
+  // Set Commons theme/branding during installation.
+  _commons_set_theme('commons_origins');
+}
+
+/**
+ * Force-set a theme at any point during the execution of the request.
+ *
+ * Drupal doesn't give us the option to set the theme during the installation
+ * process and forces enable the maintenance theme too early in the request
+ * for us to modify it in a clean way.
+ */
+function _commons_set_theme($target_theme) {
+  if ($GLOBALS['theme'] != $target_theme) {
+    unset($GLOBALS['theme']);
+
+    drupal_static_reset();
+    $GLOBALS['conf']['maintenance_theme'] = $target_theme;
+    _drupal_maintenance_theme();
+  }
+}
+
+/**
  * Implements hook_form_FORM_ID_alter() for install_configure_form().
  *
  * Allows the profile to alter the site configuration form.
