diff --git a/app/adapters/document.js b/app/adapters/document.js
index f0b1aabd8c68e7a957b86eecd92fba1cab82165c..f5ec3ecd2d92379d7a6080554d9282e74675a117 100644
--- a/app/adapters/document.js
+++ b/app/adapters/document.js
@@ -14,4 +14,20 @@ export default class NodeAdapter extends ApplicationAdapter {
       return ret;
     });
   }
+
+  uploadFile({doc, file}) {
+    let build_url, url, headers;
+
+    headers = this.headers;
+    headers['Content-Disposition'] = `attachment; filename=${file.name}`;
+
+    build_url = this.buildURL('documents', doc.id);
+    url = `${build_url}upload/${file.name}`;
+
+    return fetch(url, {
+      method: 'PUT',
+      body: file,
+      headers: headers
+    });
+  }
 }
diff --git a/app/components/button/upload.js b/app/components/button/upload.js
index 764508629dd6e2f39a834c99a3b497f7740991a0..2f10ec2b18e846d8cf2d5f191c5088629d5de1d9 100644
--- a/app/components/button/upload.js
+++ b/app/components/button/upload.js
@@ -30,8 +30,6 @@ export default class UploadButtonComponent extends Component {
   @action
   onUploadChange(event) {
     let files;
-    console.log(this.args.node.id);
-    console.log(event.target.files);
 
     files = event.target.files;
 
@@ -41,22 +39,22 @@ export default class UploadButtonComponent extends Component {
     }
 
     Array.from(files, (file) => {
-      let new_doc;
-
       /* Upload of documents to the server side is two stage process:
         (1.) create document model on the server side
         (2.) upload file and associated it with model created in (1.)
        */
-      new_doc = this._createDocumentModel({
+      this._createDocumentModel({
         file: file,
         node: this.args.node,
         lang: "deu"
+      }).then((doc) => {
+        this._uploadFile({doc, file});
       });
-      this._uploadFile({doc: new_doc, file: file});
+
     });
   }
 
-  _createDocumentModel({file, node, lang}) {
+  async _createDocumentModel({file, node, lang}) {
     /*
       Creates document model on the server side.
 
@@ -78,9 +76,7 @@ export default class UploadButtonComponent extends Component {
     new_doc.parent = node;
     new_doc.lang = lang;
 
-    new_doc.save();
-
-    return new_doc;
+    return new_doc.save();
   }
 
   _uploadFile({file, doc}) {
@@ -89,6 +85,10 @@ export default class UploadButtonComponent extends Component {
 
       Document model ``doc`` should exist on the server side.
     */
+    let doc_adapter = this.store.adapterFor('document');
+
+
+    doc_adapter.uploadFile({file, doc});
   }
 
 }
\ No newline at end of file
diff --git a/app/routes/authenticated/document.js b/app/routes/authenticated/document.js
index 1bb1975c67c4424ed67280dc7facd14be938f994..4695eb5721ecf844f25650f159f4ee6a8297440d 100644
--- a/app/routes/authenticated/document.js
+++ b/app/routes/authenticated/document.js
@@ -61,7 +61,7 @@ export default class DocumentRoute extends Route {
     return {
       'document_version': document_version,
       'pages': pages_with_url
-    }
+    };
   }
 
   renderTemplate() {