diff --git a/app/components/button/download_document_version.hbs b/app/components/button/download_document_version.hbs
index ad7e43fcf608c6848d3ec2c387735aae8969dc7f..0931d85e881c4459ea4823e07d600fbd940d7ebf 100644
--- a/app/components/button/download_document_version.hbs
+++ b/app/components/button/download_document_version.hbs
@@ -9,12 +9,10 @@
   <ul class="dropdown-menu">
     {{#each @document_versions as |document_version|}}
       <li>
-        <LinkTo
-          @route="authenticated.document-version-download"
-          @model={{document_version.id}}
-          class="dropdown-item">
+        <a class="dropdown-item" href="#"
+          {{on "click" (fn this.download document_version)}}>
             version {{document_version.number}} {{document_version.short_description}}
-        </LinkTo>
+        </a>
       </li>
     {{/each}}
   </ul>
diff --git a/app/components/button/download_document_version.js b/app/components/button/download_document_version.js
new file mode 100644
index 0000000000000000000000000000000000000000..c974ce5fdd435dd395b3b0bc597595cde0b04ec5
--- /dev/null
+++ b/app/components/button/download_document_version.js
@@ -0,0 +1,30 @@
+import Component from '@glimmer/component';
+import { action } from '@ember/object';
+import { inject as service } from '@ember/service';
+
+
+export default class ButtonDownloadComponent extends Component {
+
+  @service requests;
+
+  @action
+  download(document_version) {
+    /*
+      `document_version` contains following attributes:
+        id
+        number
+        file_name
+        lang
+        pages
+        size
+        page_count
+        short_description
+
+      attributes which correspond to server side (or client side) DocumentVersion model
+    */
+    this.requests.downloadDocumentVersion(
+      document_version
+    );
+  }
+}
+
diff --git a/app/components/viewer/action_buttons.hbs b/app/components/viewer/action_buttons.hbs
index 294289e304d6ea20aeab93a0a5afe315a5193c81..c967b5cadafda7cf07c3f084df0cd21fc93b851e 100644
--- a/app/components/viewer/action_buttons.hbs
+++ b/app/components/viewer/action_buttons.hbs
@@ -1,12 +1,6 @@
 <div>
   <Button::DownloadDocumentVersion
     @document_versions={{@document_versions}} />
-  <button
-    class="btn btn-light"
-    type="button">
-      <i class="fa fa-upload mr-1"></i>
-    Upload
-  </button>
   <button
     class="btn btn-light"
     type="button"
diff --git a/app/components/viewer/index.js b/app/components/viewer/index.js
index 38951fbb6cdae06d1e91f02c203a982471cdd377..4a00bee064bb0adec1fa6fca292aa26f472b882e 100644
--- a/app/components/viewer/index.js
+++ b/app/components/viewer/index.js
@@ -10,7 +10,7 @@ export default class ViewComponent extends Component {
   @action
   onRunOCR() {
     this.requests.runOCR({
-      doc_id: this.args.last_document_version.id,
+      doc_id: this.args.doc.id,
       lang: 'deu'
     });
   }
diff --git a/app/router.js b/app/router.js
index b1ccadd0d657cc8c6aaa5fa951e596b8590ca3ed..014e1720eb88dc7ed45ddc9bb82cffa3631b8ab4 100644
--- a/app/router.js
+++ b/app/router.js
@@ -11,10 +11,6 @@ Router.map(function () {
     this.route('documents');
     this.route('inbox');
     this.route('document', { path: '/document/:document_id' });
-    this.route(
-      'document-version-download',
-      { path: '/document-versions/:document_version_id/download/' }
-    );
 
     this.route('nodes', { path: '/nodes/:node_id' });
 
diff --git a/app/services/requests.js b/app/services/requests.js
index 78b01f777492b9c8b88396c41dc891b05607f57d..fedbb59a28c4f8275cf49559b4859607cedba406 100644
--- a/app/services/requests.js
+++ b/app/services/requests.js
@@ -27,6 +27,46 @@ export default class Requests extends Service {
     });
   }
 
+  async downloadDocumentVersion(document_version) {
+    /*
+      `document_version` contains following attributes:
+        id
+        number
+        file_name
+        lang
+        pages
+        size
+        page_count
+        short_description
+
+      attributes which correspond to server side (or client side) DocumentVersion model
+    */
+    let url, headers_copy = {};
+
+    url = `${this.base_url}document-versions/${document_version.id}/download/`;
+    Object.assign(headers_copy, this.headers);
+     //headers_copy['Access-Control-Allow-Origin'] = ENV.APP.HOST;
+
+    return fetch(url, {
+      method: 'GET',
+      headers: headers_copy
+    }).then(
+      response => response.blob()
+    ).then((blob) => {
+      let url = window.URL.createObjectURL(blob);
+      let a = document.createElement('a');
+
+      a.href = url;
+      a.download = document_version.file_name;
+      // we need to append the element to the dom -> otherwise it will not
+      // work in firefox
+      document.body.appendChild(a);
+      a.click();
+      //afterwards we remove the element again
+      a.remove();
+    });
+  }
+
   get base_url() {
     return `${ENV.APP.HOST}/${ENV.APP.NAMESPACE}/`;
   }