diff --git a/local/languages/de.ini b/local/languages/de.ini
index c0d4b806d03fb7b45848a9c0ca6d142764a1f556..7980b367eac6fd631c9e651c394ed37fdf924281 100644
--- a/local/languages/de.ini
+++ b/local/languages/de.ini
@@ -199,6 +199,7 @@ Ask a Librarian = "Frage an die Bibliothek"
 Audience = Zielpublikum
 Author = "Person / Institution"
 Available = Verfügbar
+Available_Via = Verfügbar über
 Available Stock = Verfügbarer Bestand
 Awards = Auszeichnungen
 Back = Zurück
@@ -359,6 +360,7 @@ Library = Bibliothek
 Library Regulations = Benutzungsordnung
 Limit To = "Begrenze auf"
 Link to = "Zur Webseite"
+Link-to = "Link zum"
 List of new items = "Neuerwerbungsliste"
 Local Holdings = "Lokale Bestände"
 Local Subjects = "Lokale Schlagwörter"
diff --git a/local/languages/en.ini b/local/languages/en.ini
index e478706d99d221ea711ea4b766014e6c03389357..ee7ffca62fa7102466cbe0188d26d3b006558ec4 100644
--- a/local/languages/en.ini
+++ b/local/languages/en.ini
@@ -337,6 +337,7 @@ Audience = Audience
 # Author = Creator
 Author = "Author / Corporation"
 Available = Available
+Available_Via = available via
 Awards = Awards
 Back = Back
 Backtrace = Backtrace
@@ -460,6 +461,7 @@ Library = Library
 Library Catalog Username = "Library Catalog User Name"
 Limit To = "Limit to"
 Link to = "To Website"
+Link-to = "Link to"
 List = List
 Loading = Loading
 Located = Located
diff --git a/module/finc/src/finc/AjaxHandler/GetRecordCover.php b/module/finc/src/finc/AjaxHandler/GetRecordCover.php
index 8c6333421a14867637c08a4ce3308124bf026029..5555926d6e7b9e235edacc918c4df16b42c444c3 100644
--- a/module/finc/src/finc/AjaxHandler/GetRecordCover.php
+++ b/module/finc/src/finc/AjaxHandler/GetRecordCover.php
@@ -139,13 +139,6 @@ class GetRecordCover extends AbstractBase implements AjaxHandlerInterface
 
         return ($url || !$this->renderer || !$this->useCoverFallbacksOnFail)
             ? $this->formatResponse(compact('url', 'size'))
-            : $this->formatResponse(
-                [
-                    'html' => $this->renderer->render(
-                        'record/coverReplacement',
-                        ['driver' => $record]
-                    )
-                ]
-            );
+            : [""];
     }
 }
diff --git a/module/finc/src/finc/View/Helper/Root/Record.php b/module/finc/src/finc/View/Helper/Root/Record.php
index 76d54ff47774e4edb3c8f5c8f82ab59a5658c935..c7117e000c20d159e2d93575dfd7706d58610e12 100644
--- a/module/finc/src/finc/View/Helper/Root/Record.php
+++ b/module/finc/src/finc/View/Helper/Root/Record.php
@@ -160,22 +160,24 @@ class Record extends \VuFind\View\Helper\Root\Record
     /**
      * Render a (list of) record icons.
      *
-     * @param string $tpl     Template for record icon, default: record-icon.phtml
-     * @param bool   $addText Return additional access / format. Default: true
+     * @param string $tpl         phtml for record icon, default: record-icon.phtml
+     * @param bool   $setIconText Return additional access / format. Default: true
      *
      * @return string
      */
     public function getRecordIcon(
         string $tpl = 'record-icon',
-        bool $addText = true
+        bool $setIconText = true
     ): string {
         $iconType = $this->getRecordIconType();
         $iconClass = $this->getRecordIconClass($iconType);
         return $this->renderTemplate(
             $tpl . '.phtml',
-            ['iconClass' => $this->baseIconClass . ' ' . $iconClass]
-        )
-            . ($addText ? $this->getRecordIconText($iconType, $iconClass) : '');
+            [
+                'iconClass' => $this->baseIconClass . ' ' . $iconClass,
+                'setIconText' => $setIconText
+            ]
+        );
     }
 
     /**
diff --git a/themes/finc/js/covers.js b/themes/finc/js/covers.js
index 3eb309ef70b9765951f99e163e3185e1084aca2d..7c0771977116dbf3aa7fd9648c982760b2accbbf 100644
--- a/themes/finc/js/covers.js
+++ b/themes/finc/js/covers.js
@@ -33,8 +33,18 @@ function loadCoverByElement(data, element) {
       container.children().not('img').hide();
       anchor.show();
       anchor.attr('href', response.data.url);
-      anchor.removeClass('hidden'); // finc specific
-      registerCoverForModal(anchor, response.data.url); // finc specific
+      // finc specific
+      registerCoverForModal(anchor, response.data.url);
+      if (data.ariaLabel) {
+        anchor.attr('aria-label', data.ariaLabel);
+      }
+      if (data.alt) {
+        img.attr('alt', data.alt);
+      }
+      anchor.attr('tabindex', 0);
+      anchor.removeClass('hidden');
+      anchor.removeAttr('aria-hidden');
+      // finc specific - END
     } else {
       img.remove();
       if (typeof response.data.html !== 'undefined') {
diff --git a/themes/finc/templates/RecordDriver/DefaultRecord/record-icon-text.phtml b/themes/finc/templates/RecordDriver/DefaultRecord/record-icon-text.phtml
index 997f06c9234e5b470499e6b3e5a94b43f87a4786..ea9258f886e259c331a5fd198867d10f8c105873 100644
--- a/themes/finc/templates/RecordDriver/DefaultRecord/record-icon-text.phtml
+++ b/themes/finc/templates/RecordDriver/DefaultRecord/record-icon-text.phtml
@@ -2,7 +2,7 @@
 <?php if ($iconClass): ?>
   <div class="access-icon hidden-print">
     <span>
-      <?=$this->translate("($iconClass)")?>
+      <span class="sr-only"><?=$this->translate("Available_Via")?></span> <?=$this->translate("($iconClass)")?>
     </span>
   </div>
 <?php endif; ?>
diff --git a/themes/finc/templates/RecordDriver/DefaultRecord/record-icon.phtml b/themes/finc/templates/RecordDriver/DefaultRecord/record-icon.phtml
index 6cd2fbe8890f1db9ea1319f2a1045ebbf1a6a977..c79e96867483e6a986f4cfab5ecbb40955963b42 100644
--- a/themes/finc/templates/RecordDriver/DefaultRecord/record-icon.phtml
+++ b/themes/finc/templates/RecordDriver/DefaultRecord/record-icon.phtml
@@ -4,5 +4,8 @@
     <i aria-hidden="true" class="<?=$iconClass?>"></i>
     <?php /* separate access text from icon - moved to cover.phtml */ ?>
   </span>
+  <?php if ($this->setIconText ?? true): ?>
+      <?=$this->record($this->driver)->getRecordIconText()?>
+  <?php endif; ?>
 <?php endif; ?>
 <!-- finc: recordDriver - DefaultRecord - record-icon - END -->
\ No newline at end of file
diff --git a/themes/finc/templates/record/cover.phtml b/themes/finc/templates/record/cover.phtml
index 63b6241951f925b51482ac0eee112e7bade88bd4..ff34f1c1bd441e8f3c0a9abcc6390b4ffb0dc517 100644
--- a/themes/finc/templates/record/cover.phtml
+++ b/themes/finc/templates/record/cover.phtml
@@ -5,13 +5,16 @@
   the class '.nocover' prevents nocover images from loading in lightbox or can be used to hide the images */ ?>
 <?php $alt = $alt ?? $this->transEsc('Cover Image')?>
 <?php $id = $driver->getUniqueID() ?>
+<?php $title = $this->transEsc($driver->getTitle()); ?>
+
 <?php if ($id) {
-  $coverId = "cover-$id-" . time();
+    $coverId = "cover-$id-" . time();
 } else {
-  $cover = false;
+    $cover = false;
 }
 ?>
 <?php if ($cover): ?>
+  <?php /* load cover directly... */ ?>
   <?php if ($this->link): ?><a id="<?=$coverId?>" href="<?=$this->escapeHtmlAttr($this->link)?>" tabindex="-1" aria-hidden="true"><?php endif; ?>
   <img alt="<?=$alt?>" <?php if ($linkPreview): ?>data-linkpreview="true" <?php endif; ?>class="recordcover" src="<?=$this->escapeHtmlAttr($cover); ?>" />
   <?php if ($this->link): ?>
@@ -23,16 +26,27 @@
 <?php elseif ($cover === false): ?>
   <img src="<?=$this->url('cover-unavailable')?>" <?php if ($linkPreview): ?>data-linkpreview="true" <?php endif; ?>class="nocover" alt="<?=$this->transEsc('No Cover Image')?>" aria-hidden="true" tabindex="-1" />
 <?php else: ?>
+  <?php /* load cover by ajax */ ?>
   <div id="<?=$coverId?>" class="ajaxcover">
       <div class="spinner"><i class="fa fa-spinner fa-spin"></i></div>
       <div class="cover-container">
+        <?=$this->setIconText = false;?>
         <?=$this->render('record/coverReplacement')?>
         <a class="coverlink hidden" href="javascript:" aria-hidden="true" tabindex="-1">
           <img <?php if ($linkPreview): ?>data-linkpreview="true" <?php endif; ?> class="recordcover ajax" src="<?=$this->imageLink('noCover2.gif')?>" alt="<?=$this->escapeHtmlAttr($alt); ?>" />
+          <script>
+            loadCoverByElement(
+              {
+                recordId:'<?=$this->escapeHtmlAttr($driver->getUniqueID())?>',
+                alt:'<?=$this->transEsc('Cover Image')?> <?=$this->transEsc("of")?> <?=$title?>',
+                ariaLabel:'<?=$this->transEsc("Link-to")?> <?=$this->transEsc('Cover Image')?> <?=$this->transEsc("of")?> <?=$title?>',
+                size:'<?=$this->escapeHtmlAttr($size)?>',
+                source:'<?=$this->escapeHtmlAttr($driver->getSourceIdentifier())?>'
+              },
+              $('#<?=$coverId?>')
+            );
+          </script>
         </a>
-        <script>
-          loadCoverByElement({source:'<?=$this->escapeHtmlAttr($driver->getSourceIdentifier())?>', recordId:'<?=$this->escapeHtmlAttr($driver->getUniqueID())?>', size:'<?=$this->escapeHtmlAttr($size)?>'}, $('#<?=$coverId?>'));
-        </script>
       </div>
   </div>
 <?php endif; ?>
diff --git a/themes/finc/templates/record/coverReplacement.phtml b/themes/finc/templates/record/coverReplacement.phtml
index d26b8d7bcb980e7a9d10d36e7f64b1cf126c1a32..4662e1b083a775660904a3f50b12e5df084023bd 100644
--- a/themes/finc/templates/record/coverReplacement.phtml
+++ b/themes/finc/templates/record/coverReplacement.phtml
@@ -1 +1 @@
-<?= $this->record($this->driver)->getRecordIcon('record-icon', false) ?>
\ No newline at end of file
+<?= $this->record($this->driver)->getRecordIcon('record-icon', $this->setIconText ?? true) ?>
\ No newline at end of file