diff --git a/core/lib/Drupal/Core/Config/Entity/ConfigEntityBase.php b/core/lib/Drupal/Core/Config/Entity/ConfigEntityBase.php
index c8b9eda..27f6649 100644
--- a/core/lib/Drupal/Core/Config/Entity/ConfigEntityBase.php
+++ b/core/lib/Drupal/Core/Config/Entity/ConfigEntityBase.php
@@ -7,6 +7,7 @@
 
 namespace Drupal\Core\Config\Entity;
 
+use Drupal\Component\Uuid\Uuid;
 use Drupal\Core\Entity\Entity;
 use Drupal\Core\Entity\EntityStorageControllerInterface;
 use Drupal\Core\Config\ConfigDuplicateUUIDException;
@@ -187,5 +188,13 @@ public function preSave(EntityStorageControllerInterface $storage_controller) {
       }
     }
   }
+  
+  /**
+   * {@inheritdoc}
+   */
+  public function setUuid() {
+    $uuid = new Uuid();
+    $this->uuid = $uuid->generate();
+  }
 
 }
diff --git a/core/lib/Drupal/Core/Config/Entity/ConfigEntityInterface.php b/core/lib/Drupal/Core/Config/Entity/ConfigEntityInterface.php
index 14d3f18..a636232 100644
--- a/core/lib/Drupal/Core/Config/Entity/ConfigEntityInterface.php
+++ b/core/lib/Drupal/Core/Config/Entity/ConfigEntityInterface.php
@@ -74,5 +74,17 @@ public function setStatus($status);
    * @return bool
    */
   public function status();
+  
+  /**
+   * Sets the entity UUID (Universally Unique Identifier).
+   *
+   * The UUID is guaranteed to be unique and can be used to identify an entity
+   * across multiple systems.
+   *
+   * @return string
+   *   The UUID of the entity, or NULL if the entity does not have one.
+   */
+  public function setUuid();
+
 
 }
diff --git a/core/lib/Drupal/Core/Config/Entity/ConfigStorageController.php b/core/lib/Drupal/Core/Config/Entity/ConfigStorageController.php
index 7fe3c49..663c575 100644
--- a/core/lib/Drupal/Core/Config/Entity/ConfigStorageController.php
+++ b/core/lib/Drupal/Core/Config/Entity/ConfigStorageController.php
@@ -7,7 +7,6 @@
 
 namespace Drupal\Core\Config\Entity;
 
-use Drupal\Component\Uuid\Uuid;
 use Drupal\Core\Entity\EntityInterface;
 use Drupal\Core\Entity\EntityMalformedException;
 use Drupal\Core\Entity\EntityStorageControllerBase;
@@ -49,7 +48,7 @@ class ConfigStorageController extends EntityStorageControllerBase {
   protected $statusKey = 'status';
 
   /**
    * The config factory service.
    *
    * @var \Drupal\Core\Config\ConfigFactory
    */
@@ -144,7 +143,7 @@ public function loadMultiple(array $ids = NULL) {
       // Remove any invalid ids from the array.
       $passed_ids = array_intersect_key($passed_ids, $entities);
       foreach ($entities as $entity) {
-        $passed_ids[$entity->{$this->idKey}] = $entity;
+        $passed_ids[$entity->id()] = $entity;
       }
       $entities = $passed_ids;
     }
@@ -322,10 +321,11 @@ public function create(array $values) {
     $entity->enforceIsNew();
 
     // Assign a new UUID if there is none yet.
-    if (!isset($entity->{$this->uuidKey})) {
-      $uuid = new Uuid();
-      $entity->{$this->uuidKey} = $uuid->generate();
-    }
+    $uuid = $entity->Uuid();
+
+    if (empty($uuid)) {
+      $entity->setUuid();
+     }
     $entity->postCreate($this);
 
     // Modules might need to add or change the data initially held by the new
diff --git a/core/lib/Drupal/Core/Entity/EntityStorageControllerBase.php b/core/lib/Drupal/Core/Entity/EntityStorageControllerBase.php
index ea4e06c..c1e573f 100644
--- a/core/lib/Drupal/Core/Entity/EntityStorageControllerBase.php
+++ b/core/lib/Drupal/Core/Entity/EntityStorageControllerBase.php
@@ -254,5 +254,12 @@ protected function invokeTranslationHooks(EntityInterface $entity) {
       }
     }
   }
+  
+  /**
+   * {@inheritdoc}
+   */
+  public function id() {
+    return $this->idKey;
+  }
 
 }
diff --git a/core/lib/Drupal/Core/Entity/EntityStorageControllerInterface.php b/core/lib/Drupal/Core/Entity/EntityStorageControllerInterface.php
index 24447fd..f2362d1 100644
--- a/core/lib/Drupal/Core/Entity/EntityStorageControllerInterface.php
+++ b/core/lib/Drupal/Core/Entity/EntityStorageControllerInterface.php
@@ -172,5 +172,14 @@ public function invokeFieldMethod($method, EntityInterface $entity);
    *   The entity object.
    */
   public function invokeFieldItemPrepareCache(EntityInterface $entity);
+  
+  /**
+   * Returns the entity identifier (the entity's machine name or numeric ID).
+   *
+   * @return
+   *   The identifier of the entity, or NULL if the entity does not yet have
+   *   an identifier.
+   */
+  public function id();
 
 }
diff --git a/core/modules/shortcut/lib/Drupal/shortcut/Form/SetCustomize.php b/core/modules/shortcut/lib/Drupal/shortcut/Form/SetCustomize.php
index 29da4a8..93605a2 100644
--- a/core/modules/shortcut/lib/Drupal/shortcut/Form/SetCustomize.php
+++ b/core/modules/shortcut/lib/Drupal/shortcut/Form/SetCustomize.php
@@ -35,7 +35,7 @@ public function form(array $form, array &$form_state) {
       ),
     );
 
-    foreach ($this->entity->links as $link) {
+    foreach ($this->entity->getLinks() as $link) {
       $mlid = $link->id();
       $form['shortcuts']['links'][$mlid]['#attributes']['class'][] = 'draggable';
       $form['shortcuts']['links'][$mlid]['name']['#markup'] = l($link->link_title, $link->link_path);
@@ -74,7 +74,7 @@ protected function actions(array $form, array &$form_state) {
     return array(
       'submit' => array(
         '#value' => t('Save changes'),
-        '#access' => !empty($this->entity->links),
+        '#access' => !is_null($this->entity->getLinks()),
         '#submit' => array(
           array($this, 'submit'),
           array($this, 'save'),
@@ -87,7 +87,7 @@ protected function actions(array $form, array &$form_state) {
    * {@inheritdoc}
    */
   public function save(array $form, array &$form_state) {
-    foreach ($this->entity->links as $link) {
+    foreach ($this->entity->getLinks() as $link) {
       $link->weight = $form_state['values']['shortcuts']['links'][$link->mlid]['weight'];
       $link->save();
     }
diff --git a/core/modules/shortcut/lib/Drupal/shortcut/Plugin/Core/Entity/Shortcut.php b/core/modules/shortcut/lib/Drupal/shortcut/Plugin/Core/Entity/Shortcut.php
index 3c9bd1c..a97d3b2 100644
--- a/core/modules/shortcut/lib/Drupal/shortcut/Plugin/Core/Entity/Shortcut.php
+++ b/core/modules/shortcut/lib/Drupal/shortcut/Plugin/Core/Entity/Shortcut.php
@@ -46,14 +46,14 @@ class Shortcut extends ConfigEntityBase implements ShortcutInterface {
    *
    * @var string
    */
-  public $id;
+  protected $id;
 
   /**
    * The UUID for the configuration entity.
    *
    * @var string
    */
-  public $uuid;
+  protected $uuid;
 
   /**
    * The human-readable name of the configuration entity.
@@ -67,7 +67,7 @@ class Shortcut extends ConfigEntityBase implements ShortcutInterface {
    *
    * @var array
    */
-  public $links = array();
+  protected $links = array();
 
   /**
    * Overrides \Drupal\Core\Entity\Entity::uri().
@@ -93,15 +93,17 @@ public function postCreate(EntityStorageControllerInterface $storage_controller)
       // Generate a name to have no collisions with menu.
       // Size of menu_name is 32 so id could be 23 = 32 - strlen('shortcut-').
       $id = substr($this->id(), 0, 23);
-      $this->set('id', $id);
+      $this->setId($id);
       if ($default_set->id() != $id) {
-        foreach ($default_set->links as $link) {
+        $shortcut_set_links =$this->getLinks();
+        foreach ($default_set->getLinks() as $link) {
           $link = $link->createDuplicate();
           $link->enforceIsNew();
           $link->menu_name = $id;
           $link->save();
-          $this->links[$link->uuid()] = $link;
-        }
+          $shortcut_set_links[$link->uuid()] = $link;         
+        } 
+        $this->setLinks($shortcut_set_links);
       }
     }
   }
@@ -111,16 +113,18 @@ public function postCreate(EntityStorageControllerInterface $storage_controller)
    */
   public function preSave(EntityStorageControllerInterface $storage_controller) {
     // Just store the UUIDs.
-    foreach ($this->links as $uuid => $link) {
-      $this->links[$uuid] = $uuid;
+    $shortcut_set_links =$this->getLinks();
+    foreach ($shortcut_set_links as $uuid => $link) {
+      $shortcut_set_links[$uuid] = $uuid;
     }
+    $this->setLinks($shortcut_set_links);
   }
 
   /**
    * {@inheritdoc}
    */
   public function postSave(EntityStorageControllerInterface $storage_controller, $update = TRUE) {
-    foreach ($this->links as $uuid) {
+    foreach ($this->getLinks() as $uuid) {
       if ($menu_link = entity_load_by_uuid('menu_link', $uuid)) {
         // Do not specifically associate these links with the shortcut module,
         // since other modules may make them editable via the menu system.
@@ -143,4 +147,28 @@ public static function preDelete(EntityStorageControllerInterface $storage_contr
 
     }
   }
+  
+    /**
+   * {@inheritdoc}
+   */
+  public function setLinks(array $links){
+    $this->links = $links;
+    return $this;
+  }
+  
+      /**
+   * {@inheritdoc}
+   */
+  public function setId($id){
+    $this->set('id', $id);
+    return $this;
+  }
+  
+    /**
+   * {@inheritdoc}
+   */
+ public function getLinks(){
+    return $this->links;
+  }
+  
 }
diff --git a/core/modules/shortcut/lib/Drupal/shortcut/ShortcutStorageController.php b/core/modules/shortcut/lib/Drupal/shortcut/ShortcutStorageController.php
index bae0e5c..cb3a174 100644
--- a/core/modules/shortcut/lib/Drupal/shortcut/ShortcutStorageController.php
+++ b/core/modules/shortcut/lib/Drupal/shortcut/ShortcutStorageController.php
@@ -20,13 +20,15 @@ class ShortcutStorageController extends ConfigStorageController implements Short
    */
   protected function attachLoad(&$queried_entities, $revision_id = FALSE) {
     parent::attachLoad($queried_entities, $revision_id);
-
+    $entity_links = array();
     foreach ($queried_entities as $id => $entity) {
       $links = menu_load_links('shortcut-' . $id);
       foreach ($links as $menu_link) {
-        $entity->links[$menu_link->uuid()] = $menu_link;
+        $entity_links[$menu_link->uuid()] = $menu_link;
       }
+      $entity->setLinks($entity_links);
     }
+    
   }
 
   /**
diff --git a/core/modules/shortcut/lib/Drupal/shortcut/Tests/ShortcutLinksTest.php b/core/modules/shortcut/lib/Drupal/shortcut/Tests/ShortcutLinksTest.php
index 6bc3a2c..6396947 100644
--- a/core/modules/shortcut/lib/Drupal/shortcut/Tests/ShortcutLinksTest.php
+++ b/core/modules/shortcut/lib/Drupal/shortcut/Tests/ShortcutLinksTest.php
@@ -66,8 +66,8 @@ function testShortcutQuickLink() {
     theme_enable(array('seven'));
     config('system.theme')->set('admin', 'seven')->save();
     variable_set('node_admin_theme', TRUE);
-
-    $link = reset($this->set->links);
+    $shortcut_set_links = $this->set->getLinks();
+    $link = reset($shortcut_set_links);
 
     $this->drupalGet($link->link_path);
     $this->assertRaw(t('Remove from %title shortcuts', array('%title' => $this->set->label())), '"Add to shortcuts" link properly switched to "Remove from shortcuts".');
@@ -82,7 +82,8 @@ function testShortcutLinkRename() {
     // Attempt to rename shortcut link.
     $new_link_name = $this->randomName();
 
-    $link = reset($set->links);
+    $shortcut_set_links = $set->getLinks();
+    $link = reset($shortcut_set_links);
     $this->drupalPost('admin/config/user-interface/shortcut/link/' . $link->mlid, array('shortcut_link[link_title]' => $new_link_name, 'shortcut_link[link_path]' => $link->link_path), t('Save'));
     $saved_set = shortcut_set_load($set->id());
     $titles = $this->getShortcutInformation($saved_set, 'link_title');
@@ -99,7 +100,8 @@ function testShortcutLinkChangePath() {
     // Tests changing a shortcut path.
     $new_link_path = 'admin/config';
 
-    $link = reset($set->links);
+    $shortcut_set_links = $set->getLinks();
+    $link = reset($shortcut_set_links);
     $this->drupalPost('admin/config/user-interface/shortcut/link/' . $link->mlid, array('shortcut_link[link_title]' => $link->link_title, 'shortcut_link[link_path]' => $new_link_path), t('Save'));
     $saved_set = shortcut_set_load($set->id());
     $paths = $this->getShortcutInformation($saved_set, 'link_path');
@@ -113,7 +115,8 @@ function testShortcutLinkChangePath() {
   function testShortcutLinkDelete() {
     $set = $this->set;
 
-    $link = reset($set->links);
+    $shortcut_set_links = $set->getLinks();
+    $link = reset($shortcut_set_links);
     $this->drupalPost('admin/config/user-interface/shortcut/link/' . $link->mlid . '/delete', array(), 'Delete');
     $saved_set = shortcut_set_load($set->id());
     $mlids = $this->getShortcutInformation($saved_set, 'mlid');
diff --git a/core/modules/shortcut/lib/Drupal/shortcut/Tests/ShortcutSetsTest.php b/core/modules/shortcut/lib/Drupal/shortcut/Tests/ShortcutSetsTest.php
index b02cd56..b975341 100644
--- a/core/modules/shortcut/lib/Drupal/shortcut/Tests/ShortcutSetsTest.php
+++ b/core/modules/shortcut/lib/Drupal/shortcut/Tests/ShortcutSetsTest.php
@@ -93,7 +93,10 @@ function testShortcutSetSave() {
 
     $menu_link = $this->generateShortcutLink('admin', $this->randomName());
     $menu_link->save();
-    $set->links[$menu_link->uuid()] = $menu_link;
+
+    $shortcut_set_links =$set->getLinks();
+    $shortcut_set_links[$menu_link->uuid()] = $menu_link;
+    $set->setLinks($shortcut_set_links);
     $set->save();
     $saved_set = shortcut_set_load($set->id());
 
diff --git a/core/modules/shortcut/lib/Drupal/shortcut/Tests/ShortcutTestBase.php b/core/modules/shortcut/lib/Drupal/shortcut/Tests/ShortcutTestBase.php
index e1ea921..47502a8 100644
--- a/core/modules/shortcut/lib/Drupal/shortcut/Tests/ShortcutTestBase.php
+++ b/core/modules/shortcut/lib/Drupal/shortcut/Tests/ShortcutTestBase.php
@@ -57,14 +57,16 @@ function setUp() {
         'weight' => -20,
       ));
       $menu_link->save();
-      $shortcut_set->links[$menu_link->uuid()] = $menu_link;
+      $shortcut_set->setLinks(array($menu_link->uuid()=> $menu_link));
       $menu_item = entity_create('menu_link', array(
         'link_path' => 'admin/content',
         'link_title' => t('All content'),
         'weight' => -19,
       ));
       $menu_item->save();
-      $shortcut_set->links[$menu_item->uuid()] = $menu_item;
+      $shortcut_set_links =$shortcut_set->getLinks();
+      $shortcut_set_links[$menu_item->uuid()] = $menu_item;
+      $shortcut_set->setLinks($shortcut_set_links);
       $shortcut_set->save();
     }
 
@@ -85,18 +87,22 @@ function setUp() {
    * Creates a generic shortcut set.
    */
   function generateShortcutSet($label = '', $id = NULL, $default_links = TRUE) {
-    $set = entity_create('shortcut', array(
+    $shortcut_set = entity_create('shortcut', array(
       'id' => isset($id) ? $id : strtolower($this->randomName()),
       'label' => empty($label) ? $this->randomString() : $label,
     ));
     if ($default_links) {
       $menu_link = $this->generateShortcutLink('node/add');
-      $set->links[$menu_link->uuid()] = $menu_link;
+      $shortcut_set_links = $shortcut_set->getLinks();
+      $shortcut_set_links[$menu_link->uuid()] = $menu_link;
+      $shortcut_set->setLinks($shortcut_set_links);
       $menu_link = $this->generateShortcutLink('admin/content');
-      $set->links[$menu_link->uuid()] = $menu_link;
+      $shortcut_set_links = $shortcut_set->getLinks();
+      $shortcut_set_links[$menu_link->uuid()] = $menu_link;
+      $shortcut_set->setLinks($shortcut_set_links);
     }
-    $set->save();
-    return $set;
+    $shortcut_set->save();
+    return $shortcut_set;
   }
 
   /**
@@ -115,7 +121,7 @@ function generateShortcutLink($path, $title = '') {
   /**
    * Extracts information from shortcut set links.
    *
-   * @param object $set
+   * @param object $shortcut_set
    *   The shortcut set object to extract information from.
    * @param string $key
    *   The array key indicating what information to extract from each link:
@@ -126,9 +132,9 @@ function generateShortcutLink($path, $title = '') {
    * @return array
    *   Array of the requested information from each link.
    */
-  function getShortcutInformation($set, $key) {
+  function getShortcutInformation($shortcut_set, $key) {
     $info = array();
-    foreach ($set->links as $uuid => $link) {
+    foreach ($shortcut_set->getLinks() as $uuid => $link) {
       $info[] = $link->{$key};
     }
     return $info;
diff --git a/core/modules/shortcut/shortcut.admin.inc b/core/modules/shortcut/shortcut.admin.inc
index 30530af..55fd5d3 100644
--- a/core/modules/shortcut/shortcut.admin.inc
+++ b/core/modules/shortcut/shortcut.admin.inc
@@ -139,7 +139,7 @@ function shortcut_set_switch_submit($form, &$form_state) {
     $set = entity_create('shortcut', array(
       'id' => $form_state['values']['id'],
       'label' => $form_state['values']['label'],
-      'links' => $default_set->links,
+      'links' => $default_set->getLinks(),
     ));
     $set->save();
     $replacements = array(
@@ -342,6 +342,8 @@ function shortcut_admin_add_link($shortcut_link, &$shortcut_set) {
   $menu_link->save();
 
   // Add the link to the end of the list.
-  $shortcut_set->links[$menu_link->uuid()] = $menu_link;
+  $shortcut_set_links =$shortcut_set->getLinks();
+  $shortcut_set_links[$menu_link->uuid()] = $menu_link;
+  $shortcut_set->setLinks($shortcut_set_links);
   shortcut_set_reset_link_weights($shortcut_set);
 }
diff --git a/core/modules/shortcut/shortcut.install b/core/modules/shortcut/shortcut.install
index d78fa3b..3113700 100644
--- a/core/modules/shortcut/shortcut.install
+++ b/core/modules/shortcut/shortcut.install
@@ -86,7 +86,7 @@ function shortcut_update_8000() {
     }
     config('shortcut.set.' . $set->set_name)
       ->set('id', $set->set_name)
-      ->set('label', $set->title)
+      ->set('label', $set->label())
       ->set('uuid', $uuid->generate())
       ->save();
     $ids[] = $set->set_name;
diff --git a/core/modules/shortcut/shortcut.module b/core/modules/shortcut/shortcut.module
index dd094a1..541d0d9 100644
--- a/core/modules/shortcut/shortcut.module
+++ b/core/modules/shortcut/shortcut.module
@@ -235,7 +235,9 @@ function shortcut_menu_link_delete($menu_link) {
   // If the deleted menu link was in a shortcut set, remove it.
   if (strpos($menu_link->menu_name, 'shortcut-') === 0) {
     $shortcut = entity_load('shortcut', str_replace('shortcut-', '', $menu_link->menu_name));
-    unset($shortcut->links[$menu_link->uuid]);
+    $links_shortcut = $shortcut->getLinks();
+    unset($links_shortcut[$menu_link->uuid]);
+    $shortcut->setLinks($links_shortcut);
     $shortcut->save();
   }
 }
@@ -270,7 +272,7 @@ function shortcut_set_load($id) {
  */
 function shortcut_set_reset_link_weights(&$shortcut_set) {
   $weight = -50;
-  foreach ($shortcut_set->links as $menu_link) {
+  foreach ($shortcut_set->getLinks() as $menu_link) {
     $menu_link->weight = ++$weight;
   }
 }
@@ -391,7 +393,7 @@ function shortcut_default_set($account = NULL) {
 function shortcut_set_title_exists($title) {
   $sets = entity_load_multiple('shortcut');
   foreach ($sets as $id => $set) {
-    if ($set->label == $title) {
+    if ($set->label() == $title) {
       return TRUE;
     }
   }
@@ -470,7 +474,7 @@ function shortcut_preprocess_page(&$variables) {
     $shortcut_set = shortcut_current_displayed_set();
 
     // Check if $link is already a shortcut and set $link_mode accordingly.
-    foreach ($shortcut_set->links as $uuid => $shortcut) {
+    foreach ($shortcut_set->getLinks() as $uuid => $shortcut) {
       if ($link == $shortcut['link_path']) {
         $mlid = $shortcut['mlid'];
         break;
