diff --git a/section.install b/section.install
index 1bc18b7..544d9bc 100644
--- a/section.install
+++ b/section.install
@@ -65,6 +65,12 @@ function section_schema() {
         'length' => 255,
         'not null' => FALSE,
       ),
+      'settings' => array(
+        'description' => 'A blob with serialized settings.',
+        'type' => 'blob',
+        'not null' => FALSE,
+        'size' => 'big',
+      ),
     ),
     'indexes' => array(
       'rid' => array('rid'),
@@ -198,6 +204,12 @@ function section_schema() {
         'length' => 255,
         'not null' => FALSE,
       ),
+      'settings' => array(
+        'description' => 'A blob with serialized settings.',
+        'type' => 'blob',
+        'not null' => FALSE,
+        'size' => 'big',
+      ),
     ),
     'indexes' => array(
       'sid' => array('sid'),
@@ -249,3 +261,17 @@ function section_update_7001() {
     );
   }
 }
+
+/**
+ * Add section settings field.
+ */
+function section_update_7102() {
+  $field = array(
+    'description' => 'A blob with serialized settings.',
+    'type' => 'blob',
+    'not null' => FALSE,
+    'size' => 'big',
+  );
+  db_add_field('section', 'settings', $field);
+  db_add_field('section_revision', 'settings', $field);
+}
diff --git a/section.module b/section.module
index 89039bf..5f6fbe0 100644
--- a/section.module
+++ b/section.module
@@ -682,6 +682,21 @@ function section_delete_multiple($sids) {
 }
 
 /**
+ *
+ * Implements hook_entity_presave().
+ */
+function section_entity_presave($entity, $type) {
+  if ($type == 'section') {
+    if (isset($entity->path)) {
+      // Save the alias.
+      $entity->settings['alias'] = trim($entity->path['alias']);
+      $test = entity_uri($type, $entity);
+    }
+    $entity->settings = serialize($entity->settings);
+  }
+}
+
+/**
  * Inserts a section.
  */
 function section_entity_insert($entity, $type) {
@@ -689,7 +704,20 @@ function section_entity_insert($entity, $type) {
     return;
   }
 
+  if (!is_array($entity->settings)) {
+    $entity->settings = unserialize($entity->settings);
+  }
   if (module_exists('path')) {
+    // If we don't have a path specified, it probably means that we are exporting
+    // an entity from code. Let's create the path array.
+    if (isset($entity->settings['alias']) && !isset($entity->path)) {
+      $entity->path = array(
+        'pid' => NULL,
+        'source' => 'section/' . $entity->sid,
+        'alias' => $entity->settings['alias'],
+        'language' => LANGUAGE_NONE,
+      );
+    }
     if (isset($entity->path)) {
       $path = $entity->path;
       $path['alias'] = trim($path['alias']);
@@ -716,6 +744,10 @@ function section_entity_update($entity, $type) {
     return;
   }
 
+  if (!is_array($entity->settings)) {
+    $entity->settings = unserialize($entity->settings);
+  }
+
   if (module_exists('path')) {
     if (isset($entity->path)) {
       $path = $entity->path;
@@ -756,6 +788,19 @@ function section_entity_delete($entity, $type) {
   }
 }
 
+function section_entity_load($entities, $type) {
+  if ($type == 'section') {
+    foreach ($entities as $entity) {
+      if (isset($entity->settings) && !is_array($entity->settings)) {
+        $entity->settings = unserialize($entity->settings);
+      }
+      else {
+        $entity->settings = array();
+      }
+    }
+  }
+}
+
 /**
  * Menu callback; Retrieve a JSON object containing autocomplete suggestions for
  * existing sections.
