diff --git a/entity_quicklook.routing.yml b/entity_quicklook.routing.yml
index 85f0356..9ee9dc4 100644
--- a/entity_quicklook.routing.yml
+++ b/entity_quicklook.routing.yml
@@ -1,5 +1,5 @@
 entity_quicklook_formatter.render_popup:
-  path: '/entity_quicklook/{parent_entity_type}/{parent_entity}/{from_view}/{entity_type}/{entity}/{view_mode}'
+  path: '/entity_quicklook/{parent_entity_type}/{parent_entity}/{from_view}/{entity_type}/{entity}/{view_mode}/{field_name}'
   defaults:
     _controller: '\Drupal\entity_quicklook\Controller\Quicklook::renderEntity'
     _title_callback: '\Drupal\entity_quicklook\Controller\Quicklook::modalTitle'
diff --git a/src/Controller/Quicklook.php b/src/Controller/Quicklook.php
index 090f0db..e4edfce 100644
--- a/src/Controller/Quicklook.php
+++ b/src/Controller/Quicklook.php
@@ -20,11 +20,13 @@ class Quicklook extends ControllerBase {
    *   The entity being rendered.
    * @param string $view_mode
    *   The view mode to use, with "default" being the default value.
+   * @param string $field_name
+   *   The name of field being rendered.
    *
    * @return array
    *   The render array for the entity.
    */
-  public function renderEntity(EntityInterface $entity, $view_mode = 'default') {
+  public function modalTitle($parent_entity_type, EntityInterface $parent_entity, $from_view, EntityInterface $entity, $view_mode, $field_name) {
     $viewBuilder = $this->entityTypeManager()->getViewBuilder($entity->getEntityTypeId());
     $langcode = $this->languageManager()->getCurrentLanguage(LanguageInterface::TYPE_CONTENT)->getId();
     return $viewBuilder->view($entity, $view_mode, $langcode);
@@ -59,17 +61,11 @@ class Quicklook extends ControllerBase {
     }
     $components = $view_display->getComponents();
 
-    $parent_fields = $parent_entity->getFieldDefinitions();
-    /** @var \Drupal\Core\Field\FieldDefinitionInterface $parent_field */
-    foreach ($parent_fields as $parent_field) {
-      $field_name = $parent_field->getName();
-
-      if (array_key_exists($field_name, $components)) {
-        if ($components[$field_name]['type'] == 'entity_quicklook_formatter') {
-          $title = $components[$field_name]['settings']['modal_title'];
-          if (!empty($title)) {
-            return $title;
-          }
+    if (array_key_exists($field_name, $components)) {
+      if ($components[$field_name]['type'] == 'entity_quicklook_formatter') {
+        $title = $components[$field_name]['settings']['modal_title'];
+        if (!empty($title)) {
+          return $title;
         }
       }
     }
@@ -101,17 +97,19 @@ class Quicklook extends ControllerBase {
    *   The view mode from which the Quicklook formatter is being rendered.
    * @param string $view_mode
    *   The view mode for rendering the referenced entity.
+   * @param string $field_name
+   *   The name of field being rendered.
    *
    * @return \Drupal\Core\Access\AccessResult
    *   The access result.
    */
-  public function access($parent_entity_type, EntityInterface $parent_entity, $from_view, $view_mode, AccountInterface $account) {
+  public function access($parent_entity_type, EntityInterface $parent_entity, $from_view, $view_mode, $field_name) {
     // First access check: Confirm that parent entity is not returning null.
     if (!empty($parent_entity)) {
       $entity_from_bundle = $parent_entity->bundle();
     }
     else {
-      return AccessResult::forbidden();
+      return AccessResult::forbidden('Missing parent entity');
     }
 
     // Ensure the user has view access to the parent entity. Note that view
@@ -127,24 +125,22 @@ class Quicklook extends ControllerBase {
     }
     $components = $view_display->getComponents();
 
-    $parent_fields = $parent_entity->getFieldDefinitions();
-    /** @var \Drupal\Core\Field\FieldDefinitionInterface $parent_field */
-    foreach ($parent_fields as $parent_field) {
-      $field_name = $parent_field->getName();
-
-      // Second access check: Confirm that the view mode the referenced entity
-      // has been configured to be displayed with is the same view mode being
-      // requested.
-      if (array_key_exists($field_name, $components)) {
-        if ($components[$field_name]['type'] == 'entity_quicklook_formatter' && $components[$field_name]['settings']['view_mode'] == $view_mode) {
-          return $parent_access->andIf(AccessResult::allowed());
-        }
+    // Second access check: Confirm that the view mode the referenced entity
+    // has been configured to be displayed with is the same view mode being
+    // requested.
+    if (array_key_exists($field_name, $components)) {
+      if ($components[$field_name]['type'] == 'entity_quicklook_formatter' && $components[$field_name]['settings']['view_mode'] == $view_mode) {
+        return AccessResult::allowed()
+          ->addCacheableDependency($view_display)
+          ->addCacheableDependency($parent_entity);
       }
     }
 
     // If none of the entities fields are using the Quicklook field formatter
     // then we can conclude that this request is not valid.
-    return $parent_access->andIf(AccessResult::forbidden());
+    return AccessResult::forbidden(sprintf('entity_quicklook_formatter is not configured for %s field', $field_name))
+     ->addCacheableDependency($view_display)
+     ->addCacheableDependency($parent_entity);
   }
 
 }
diff --git a/src/Plugin/Field/FieldFormatter/EntityQuicklookFormatter.php b/src/Plugin/Field/FieldFormatter/EntityQuicklookFormatter.php
index 63a9bf9..fd9d982 100644
--- a/src/Plugin/Field/FieldFormatter/EntityQuicklookFormatter.php
+++ b/src/Plugin/Field/FieldFormatter/EntityQuicklookFormatter.php
@@ -223,7 +223,7 @@ class EntityQuicklookFormatter extends EntityReferenceFormatterBase implements C
       if (!$link_text) {
         $link_text = $entity->label();
       }
-      $elements[0] = $this->buildQuicklookPopup($entity, $parent_entity, $link_text, $view_mode, $link_view_mode);
+      $elements[0] = $this->buildQuicklookPopup($entity, $parent_entity, $link_text, $view_mode, $link_view_mode, $items->getFieldDefinition()->getName());
     }
     else {
       // In this case the entity to be rendered in the Quicklook modal is the
@@ -232,7 +232,7 @@ class EntityQuicklookFormatter extends EntityReferenceFormatterBase implements C
         if (!$link_text) {
           $link_text = $entity->label();
         }
-        $elements[0] = $this->buildQuicklookPopup($entity, $parent_entity, $link_text, $view_mode, $link_view_mode);
+        $elements[0] = $this->buildQuicklookPopup($entity, $parent_entity, $link_text, $view_mode, $link_view_mode, $items->getFieldDefinition()->getName());
       }
     }
 
@@ -253,11 +253,13 @@ class EntityQuicklookFormatter extends EntityReferenceFormatterBase implements C
    *   The view mode to be used for rendering the entity in the quicklook popup.
    * @param string $link_view_mode
    *   View mode for the link, to optionally render the entity in place.
+   * @param string $field_name
+   *   The field name.
    *
    * @return array
    *   The quicklook modal render array.
    */
-  public function buildQuicklookPopup(EntityInterface $entity_referenced, EntityInterface $parent_entity, $link_text, $view_mode = 'default', $link_view_mode = '') {
+  public function buildQuicklookPopup(EntityInterface $entity_referenced, EntityInterface $parent_entity, $link_text, $view_mode, $link_view_mode, $field_name) {
     $entity_type = $entity_referenced->getEntityTypeId();
     $id = $entity_referenced->id();
 
@@ -277,6 +279,7 @@ class EntityQuicklookFormatter extends EntityReferenceFormatterBase implements C
       'entity_type' => $entity_type,
       'entity' => $id,
       'view_mode' => $view_mode,
+      'field_name' => $field_name,
     ];
     // HTML attributes that will be added to the anchor tag.
     $options = [
