diff --git a/src/DisplayBase.php b/src/DisplayBase.php
index cbbd83b..f2c2569 100644
--- a/src/DisplayBase.php
+++ b/src/DisplayBase.php
@@ -1,11 +1,8 @@
 <?php
 
-/**
- * Contains \Drupal\entity_browser\DisplayBase.
- */
-
 namespace Drupal\entity_browser;
 
+use Drupal\Component\Uuid\UuidInterface;
 use Drupal\Core\Plugin\PluginBase;
 use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
 use Symfony\Component\DependencyInjection\ContainerInterface;
@@ -30,7 +27,7 @@ abstract class DisplayBase extends PluginBase implements DisplayInterface, Conta
    *
    * @var \Drupal\Core\Entity\EntityInterface[]
    */
-  protected $entities = array();
+  protected $entities = [];
 
   /**
    * Event dispatcher service.
@@ -40,6 +37,20 @@ abstract class DisplayBase extends PluginBase implements DisplayInterface, Conta
   protected $eventDispatcher;
 
   /**
+   * UUID generator interface.
+   *
+   * @var \Drupal\Component\Uuid\UuidInterface
+   */
+  protected $uuidGenerator;
+
+  /**
+   * Instance UUID string.
+   *
+   * @var string
+   */
+  protected $uuid = NULL;
+
+  /**
    * Constructs display plugin.
    *
    * @param array $configuration
@@ -50,11 +61,14 @@ abstract class DisplayBase extends PluginBase implements DisplayInterface, Conta
    *   The plugin implementation definition.
    * @param \Symfony\Component\EventDispatcher\EventDispatcherInterface $event_dispatcher
    *   Event dispatcher service.
+   * @param \Drupal\Component\Uuid\UuidInterface
+   *   UUID generator interface.
    */
-  public function __construct(array $configuration, $plugin_id, $plugin_definition, EventDispatcherInterface $event_dispatcher) {
+  public function __construct(array $configuration, $plugin_id, $plugin_definition, EventDispatcherInterface $event_dispatcher, UuidInterface $uuid_generator) {
     parent::__construct($configuration, $plugin_id, $plugin_definition);
     $this->configuration += $this->defaultConfiguration();
     $this->eventDispatcher = $event_dispatcher;
+    $this->uuidGenerator = $uuid_generator;
   }
 
   /**
@@ -65,7 +79,8 @@ abstract class DisplayBase extends PluginBase implements DisplayInterface, Conta
       $configuration,
       $plugin_id,
       $plugin_definition,
-      $container->get('event_dispatcher')
+      $container->get('event_dispatcher'),
+      $container->get('uuid')
     );
   }
 
@@ -73,7 +88,7 @@ abstract class DisplayBase extends PluginBase implements DisplayInterface, Conta
    * {@inheritdoc}
    */
   public function defaultConfiguration() {
-    return array();
+    return [];
   }
 
   /**
@@ -97,7 +112,7 @@ abstract class DisplayBase extends PluginBase implements DisplayInterface, Conta
    * {@inheritdoc}
    */
   public function calculateDependencies() {
-    return array();
+    return [];
   }
 
   /**
@@ -107,4 +122,21 @@ abstract class DisplayBase extends PluginBase implements DisplayInterface, Conta
     return $this->label;
   }
 
+  /**
+   * {@inheritdoc}
+   */
+  public function getUuid() {
+    if (empty($this->uuid)) {
+      $this->uuid = $this->uuidGenerator->generate();
+    }
+    return $this->uuid;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function setUuid($uuid) {
+    $this->uuid = $uuid;
+  }
+
 }
diff --git a/src/Form/EntityBrowserForm.php b/src/Form/EntityBrowserForm.php
index b659d63..a13d11d 100644
--- a/src/Form/EntityBrowserForm.php
+++ b/src/Form/EntityBrowserForm.php
@@ -7,6 +7,8 @@ use Drupal\Core\Form\FormStateInterface;
 use Drupal\entity_browser\DisplayAjaxInterface;
 use Drupal\entity_browser\EntityBrowserFormInterface;
 use Drupal\entity_browser\EntityBrowserInterface;
+use Symfony\Component\DependencyInjection\ContainerInterface;
+use Symfony\Component\HttpFoundation\Request;
 
 /**
  * The entity browser form.
@@ -14,13 +16,6 @@ use Drupal\entity_browser\EntityBrowserInterface;
 class EntityBrowserForm extends FormBase implements EntityBrowserFormInterface {
 
   /**
-   * The entity browser object.
-   *
-   * @var \Drupal\entity_browser\EntityBrowserInterface
-   */
-  protected $entity_browser;
-
-  /**
    * {@inheritdoc}
    */
   public function getFormId() {
@@ -43,7 +38,12 @@ class EntityBrowserForm extends FormBase implements EntityBrowserFormInterface {
   protected function init(FormStateInterface $form_state) {
     // Flag that this form has been initialized.
     $form_state->set('entity_form_initialized', TRUE);
-    $form_state->set(['entity_browser', 'instance_uuid'], \Drupal::service('uuid')->generate());
+    if (\Drupal::request()->query->has('uuid')) {
+      $form_state->set(['entity_browser', 'instance_uuid'], \Drupal::request()->query->get('uuid'));
+    }
+    else {
+      $form_state->set(['entity_browser', 'instance_uuid'], \Drupal::service('uuid')->generate());
+    }
     $form_state->set(['entity_browser', 'selected_entities'], []);
     $form_state->set(['entity_browser', 'selection_completed'], FALSE);
   }
diff --git a/src/Plugin/EntityBrowser/Display/IFrame.php b/src/Plugin/EntityBrowser/Display/IFrame.php
index 1da1e44..c069214 100644
--- a/src/Plugin/EntityBrowser/Display/IFrame.php
+++ b/src/Plugin/EntityBrowser/Display/IFrame.php
@@ -1,9 +1,5 @@
 <?php
 
-/**
- * Contains \Drupal\entity_browser\Plugin\EntityBrowser\Display\IFrame.
- */
-
 namespace Drupal\entity_browser\Plugin\EntityBrowser\Display;
 
 use Drupal\Component\Uuid\UuidInterface;
@@ -44,20 +40,6 @@ class IFrame extends DisplayBase implements DisplayRouterInterface {
   protected $currentRouteMatch;
 
   /**
-   * UUID generator interface.
-   *
-   * @var \Drupal\Component\Uuid\UuidInterface
-   */
-  protected $uuidGenerator;
-
-  /**
-   * UIID string.
-   *
-   * @var string
-   */
-  protected $uuid = NULL;
-
-  /**
    * Current path.
    *
    * @var \Drupal\Core\Path\CurrentPathStack
@@ -82,17 +64,18 @@ class IFrame extends DisplayBase implements DisplayRouterInterface {
    *   The plugin implementation definition.
    * @param \Symfony\Component\EventDispatcher\EventDispatcherInterface $event_dispatcher
    *   Event dispatcher service.
-   * @param \Drupal\Core\Routing\RouteMatchInterface
-   *   The currently active route match object.
    * @param \Drupal\Component\Uuid\UuidInterface
    *   UUID generator interface.
+   * @param \Drupal\Core\Routing\RouteMatchInterface $current_route_match
+   *   The currently active route match object.
+   * @param \Symfony\Component\HttpFoundation\Request $request
+   *   Current request.
    * @param \Drupal\Core\Path\CurrentPathStack $current_path
    *   The current path.
    */
-  public function __construct(array $configuration, $plugin_id, $plugin_definition, EventDispatcherInterface $event_dispatcher, RouteMatchInterface $current_route_match, UuidInterface $uuid, Request $request, CurrentPathStack $current_path) {
-    parent::__construct($configuration, $plugin_id, $plugin_definition, $event_dispatcher);
+  public function __construct(array $configuration, $plugin_id, $plugin_definition, EventDispatcherInterface $event_dispatcher, UuidInterface $uuid, RouteMatchInterface $current_route_match, Request $request, CurrentPathStack $current_path) {
+    parent::__construct($configuration, $plugin_id, $plugin_definition, $event_dispatcher, $uuid);
     $this->currentRouteMatch = $current_route_match;
-    $this->uuidGenerator = $uuid;
     $this->request = $request;
     $this->currentPath = $current_path;
   }
@@ -106,8 +89,8 @@ class IFrame extends DisplayBase implements DisplayRouterInterface {
       $plugin_id,
       $plugin_definition,
       $container->get('event_dispatcher'),
-      $container->get('current_route_match'),
       $container->get('uuid'),
+      $container->get('current_route_match'),
       $container->get('request_stack')->getCurrentRequest(),
       $container->get('path.current')
     );
@@ -117,12 +100,12 @@ class IFrame extends DisplayBase implements DisplayRouterInterface {
    * {@inheritdoc}
    */
   public function defaultConfiguration() {
-    return array(
+    return [
       'width' => '650',
       'height' => '500',
       'link_text' => t('Select entities'),
       'auto_open' => FALSE,
-    ) + parent::defaultConfiguration();
+    ] + parent::defaultConfiguration();
   }
 
   /**
@@ -131,9 +114,6 @@ class IFrame extends DisplayBase implements DisplayRouterInterface {
   public function displayEntityBrowser(FormStateInterface $form_state) {
     $uuid = $this->getUuid();
     /** @var \Drupal\entity_browser\Events\RegisterJSCallbacks $event */
-    // TODO - $uuid is unused in this event but we need to pass it as
-    // constructor expects it. See https://www.drupal.org/node/2600706 for more
-    // info.
     $js_event_object = new RegisterJSCallbacks($this->configuration['entity_browser_id'], $uuid);
     $js_event_object->registerCallback('Drupal.entityBrowser.selectionCompleted');
     $callback_event = $this->eventDispatcher->dispatch(Events::REGISTER_JS_CALLBACKS, $js_event_object);
@@ -223,23 +203,6 @@ class IFrame extends DisplayBase implements DisplayRouterInterface {
   /**
    * {@inheritdoc}
    */
-  public function getUuid() {
-    if (empty($this->uuid)) {
-      $this->uuid = $this->uuidGenerator->generate();
-    }
-    return $this->uuid;
-  }
-
-  /**
-    * {@inheritdoc}
-    */
-  public function setUuid($uuid) {
-    $this->uuid = $uuid;
-  }
-
-  /**
-   * {@inheritdoc}
-   */
   public function path() {
     return '/entity-browser/iframe/' . $this->configuration['entity_browser_id'];
   }
diff --git a/src/Plugin/EntityBrowser/Display/Modal.php b/src/Plugin/EntityBrowser/Display/Modal.php
index e3bd93f..9ced923 100644
--- a/src/Plugin/EntityBrowser/Display/Modal.php
+++ b/src/Plugin/EntityBrowser/Display/Modal.php
@@ -1,9 +1,5 @@
 <?php
 
-/**
- * Contains \Drupal\entity_browser\Plugin\EntityBrowser\Display\Modal.
- */
-
 namespace Drupal\entity_browser\Plugin\EntityBrowser\Display;
 
 use Drupal\Component\Utility\Html;
@@ -13,7 +9,6 @@ use Drupal\Core\Ajax\OpenModalDialogCommand;
 use Drupal\Core\Entity\EntityInterface;
 use Drupal\Core\Routing\RouteMatchInterface;
 use Drupal\Core\Url;
-use Drupal\entity_browser\DisplayAjaxInterface;
 use Drupal\entity_browser\DisplayBase;
 use Drupal\entity_browser\DisplayRouterInterface;
 use Drupal\entity_browser\Events\Events;
@@ -22,7 +17,6 @@ use Symfony\Component\DependencyInjection\ContainerInterface;
 use Symfony\Component\EventDispatcher\EventDispatcherInterface;
 use Drupal\Core\Path\CurrentPathStack;
 use Drupal\Core\Ajax\AjaxResponse;
-use Drupal\Core\Ajax\CloseDialogCommand;
 use Drupal\entity_browser\Ajax\SelectEntitiesCommand;
 use Symfony\Component\HttpKernel\Event\FilterResponseEvent;
 use Symfony\Component\HttpKernel\KernelEvents;
@@ -51,13 +45,6 @@ class Modal extends DisplayBase implements DisplayRouterInterface {
   protected $currentRouteMatch;
 
   /**
-   * UUID generator interface.
-   *
-   * @var \Drupal\Component\Uuid\UuidInterface
-   */
-  protected $uuidGenerator;
-
-  /**
    * Current path.
    *
    * @var \Drupal\Core\Path\CurrentPathStack
@@ -65,13 +52,6 @@ class Modal extends DisplayBase implements DisplayRouterInterface {
   protected $currentPath;
 
   /**
-   * UIID string.
-   *
-   * @var string
-   */
-  protected $uuid = NULL;
-
- /**
    * Current request.
    *
    * @var \Symfony\Component\HttpFoundation\Request
@@ -89,15 +69,18 @@ class Modal extends DisplayBase implements DisplayRouterInterface {
    *   The plugin implementation definition.
    * @param \Symfony\Component\EventDispatcher\EventDispatcherInterface $event_dispatcher
    *   Event dispatcher service.
-   * @param \Drupal\Core\Routing\RouteMatchInterface
-   *   The currently active route match object.
    * @param \Drupal\Component\Uuid\UuidInterface
    *   UUID generator interface.
+   * @param \Drupal\Core\Routing\RouteMatchInterface
+   *   The currently active route match object.
+   * @param \Symfony\Component\HttpFoundation\Request $request
+   *   Current request.
+   * @param \Drupal\Core\Path\CurrentPathStack $current_path
+   *   The current path.
    */
-  public function __construct(array $configuration, $plugin_id, $plugin_definition, EventDispatcherInterface $event_dispatcher, RouteMatchInterface $current_route_match, UuidInterface $uuid, CurrentPathStack $current_path, Request $request) {
-    parent::__construct($configuration, $plugin_id, $plugin_definition, $event_dispatcher);
+  public function __construct(array $configuration, $plugin_id, $plugin_definition, EventDispatcherInterface $event_dispatcher, UuidInterface $uuid, RouteMatchInterface $current_route_match, CurrentPathStack $current_path, Request $request) {
+    parent::__construct($configuration, $plugin_id, $plugin_definition, $event_dispatcher, $uuid);
     $this->currentRouteMatch = $current_route_match;
-    $this->uuidGenerator = $uuid;
     $this->currentPath = $current_path;
     $this->request = $request;
   }
@@ -111,8 +94,8 @@ class Modal extends DisplayBase implements DisplayRouterInterface {
       $plugin_id,
       $plugin_definition,
       $container->get('event_dispatcher'),
-      $container->get('current_route_match'),
       $container->get('uuid'),
+      $container->get('current_route_match'),
       $container->get('path.current'),
       $container->get('request_stack')->getCurrentRequest()
     );
@@ -122,11 +105,11 @@ class Modal extends DisplayBase implements DisplayRouterInterface {
    * {@inheritdoc}
    */
   public function defaultConfiguration() {
-    return array(
+    return [
       'width' => '650',
       'height' => '500',
       'link_text' => t('Select entities'),
-    ) + parent::defaultConfiguration();
+    ] + parent::defaultConfiguration();
   }
 
   /**
@@ -134,10 +117,6 @@ class Modal extends DisplayBase implements DisplayRouterInterface {
    */
   public function displayEntityBrowser(FormStateInterface $form_state) {
     $uuid = $this->getUuid();
-    /** @var \Drupal\entity_browser\Events\RegisterJSCallbacks $event */
-    // TODO - $uuid is unused in this event but we need to pass it as
-    // constructor expects it. See https://www.drupal.org/node/2600706 for more
-    // info.
     $js_event_object = new RegisterJSCallbacks($this->configuration['entity_browser_id'], $uuid);
     $js_event_object->registerCallback('Drupal.entityBrowser.selectionCompleted');
     $js_event = $this->eventDispatcher->dispatch(Events::REGISTER_JS_CALLBACKS, $js_event_object );
@@ -254,15 +233,15 @@ class Modal extends DisplayBase implements DisplayRouterInterface {
     $form['#suffix'] = '</div>';
 
     // Add the browser id to use in the FormAjaxController.
-    $form['browser_id'] = array(
+    $form['browser_id'] = [
       '#type' => 'hidden',
       '#value' => $this->configuration['entity_browser_id'],
-    );
+    ];
 
-    $form['actions']['submit']['#ajax'] = array(
-      'callback' => array($this, 'widgetAjaxCallback'),
+    $form['actions']['submit']['#ajax'] = [
+      'callback' => [$this, 'widgetAjaxCallback'],
       'wrapper' => 'entity-browser-form',
-    );
+    ];
   }
 
   /**
@@ -302,7 +281,7 @@ class Modal extends DisplayBase implements DisplayRouterInterface {
   public function getAjaxCommands(FormStateInterface $form_state) {
     $entities = array_map(function(EntityInterface $item) {return [$item->id(), $item->uuid(), $item->getEntityTypeId()];}, $form_state->get(['entity_browser', 'selected_entities']));
 
-    $commands = array();
+    $commands = [];
     $commands[] = new SelectEntitiesCommand($this->uuid, $entities);
 
     return $commands;
@@ -346,23 +325,6 @@ class Modal extends DisplayBase implements DisplayRouterInterface {
   }
 
   /**
-   * {@inheritdoc}
-   */
-  public function getUuid() {
-    if (empty($this->uuid)) {
-      $this->uuid = $this->uuidGenerator->generate();
-    }
-    return $this->uuid;
-  }
-
-  /**
-    * {@inheritdoc}
-    */
-  public function setUuid($uuid) {
-    $this->uuid = $uuid;
-  }
-
-  /**
    * @inheritDoc
    */
   public function __sleep() {
diff --git a/src/Plugin/EntityBrowser/Display/Standalone.php b/src/Plugin/EntityBrowser/Display/Standalone.php
index 009aacc..9b8fbc6 100644
--- a/src/Plugin/EntityBrowser/Display/Standalone.php
+++ b/src/Plugin/EntityBrowser/Display/Standalone.php
@@ -1,9 +1,5 @@
 <?php
 
-/**
- * Contains \Drupal\entity_browser\Plugin\EntityBrowser\Display\Standalone.
- */
-
 namespace Drupal\entity_browser\Plugin\EntityBrowser\Display;
 
 use Drupal\entity_browser\DisplayBase;
@@ -67,18 +63,4 @@ class Standalone extends DisplayBase implements DisplayRouterInterface {
     return $this->configuration['path'];
   }
 
-  /**
-   * {@inheritdoc}
-   */
-  public function getUuid() {
-    return '';
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function setUuid($uuid) {
-    // @TODO Implement it.
-  }
-
 }
