diff --git a/public/assets/js/showFunctions.js b/public/assets/js/showFunctions.js
index 155404b5..8200d456 100644
--- a/public/assets/js/showFunctions.js
+++ b/public/assets/js/showFunctions.js
@@ -1,4 +1,8 @@
 const showFunctions = {
+    state: {},
+    setState: function(key, value) {
+        this.state[key] = value;
+    },
     addPlayPauseToVideo: function () {
         const that = this;
         const video = document.getElementById('video-asset');
@@ -22,5 +26,99 @@ const showFunctions = {
         else{
             video.pause();
         }
-    }
-}
\ No newline at end of file
+    },
+    showAsset: function () {
+        this.hideAssetStatus();
+        this.showAssetHolder();
+        if (!this.state.src) {
+            return console.log('error: src is not set')
+        }
+        if (!this.state.contentType) {
+            return console.log('error: contentType is not set')
+        }
+        if (this.state.contentType === 'video/mp4') {
+            this.showVideo();
+        } else {
+            this.showImage();
+        }
+    },
+    showVideo: function () {
+        console.log('showing video', this.state.src);
+        const video = document.getElementById('video-asset');
+        const source = document.createElement('source');
+        source.setAttribute('src', this.state.src);
+        video.appendChild(source);
+        video.play();
+    },
+    showImage: function () {
+        console.log('showing image', this.state.src);
+        const asset = document.getElementById('image-asset');
+        asset.setAttribute('src', this.state.src);
+    },
+    hideAssetStatus: function () {
+        const assetStatus = document.getElementById('asset-status');
+        assetStatus.hidden = true;
+    },
+    showAssetHolder: function () {
+        const assetHolder = document.getElementById('asset-holder');
+        assetHolder.hidden = false;
+    },
+    showSearchMessage: function () {
+        const searchMessage = document.getElementById('searching-message');
+        searchMessage.hidden = false;
+    },
+    showFailureMessage: function (msg) {
+        console.log(msg);
+        const searchMessage = document.getElementById('searching-message');
+        const failureMessage = document.getElementById('failure-message');
+        const errorMessage = document.getElementById('error-message');
+        searchMessage.hidden = true;
+        failureMessage.hidden = false;
+        errorMessage.innerText = msg;
+    },
+    checkClaimAvailability: function () {
+        const that = this;
+        const uri = `/api/local-file-available/${this.state.claimName}/${this.state.claimId}`;
+        const xhr = new XMLHttpRequest();
+        console.log(`checking local availability for ${this.state.claimName}#${this.state.claimId}`)
+        xhr.open("GET", uri, true);
+        xhr.onreadystatechange = function() {
+            if (xhr.readyState == 4) {
+                const response = JSON.parse(xhr.response);
+                if (xhr.status == 200) {
+                    if (response.message === true) {
+                        console.log('local asset is available on spee.ch')
+                        that.showAsset();
+                    } else {
+                        that.showSearchMessage();
+                        that.getAsset()
+                    }
+                } else {
+                    console.log('get failed:', response);
+                    that.showFailureMessage('Well this sucks, but we can\'t seem to phone home');
+                }
+            }
+        };
+        xhr.send();
+    },
+    getAsset: function() {
+        const that = this;
+        const uri = `/api/get-claim/${this.state.claimName}/${this.state.claimId}`;
+        const xhr = new XMLHttpRequest();
+        console.log(`getting ${this.state.claimName}#${this.state.claimId}`)
+        xhr.open("GET", uri, true);
+        xhr.onreadystatechange = function() {
+            if (xhr.readyState == 4) {
+                const response = JSON.parse(xhr.response);
+                if (xhr.status == 200) {
+                    console.log('get returned successfully', response);
+                    that.showAsset();
+                } else {
+                    console.log('get failed:', response);
+                    that.showFailureMessage(`${response.message}`);
+                }
+            }
+        };
+        xhr.send();
+    },
+};
\ No newline at end of file
diff --git a/views/partials/asset.handlebars b/views/partials/asset.handlebars
index ed73dcdb..7cc50511 100644
--- a/views/partials/asset.handlebars
+++ b/views/partials/asset.handlebars
@@ -21,101 +21,12 @@
 
 <script type="text/javascript">
 
-    const getAssetFunctions = {
-        showAsset: function () {
-            this.hideAssetStatus();
-            this.showAssetHolder();
-            {{#ifConditional claimInfo.contentType '===' 'video/mp4'}}
-                this.showVideo();
-            {{else}}
-                this.showImage();
-            {{/ifConditional}}
-        },
-        showVideo: function () {
-            console.log('showing video');
-            const video = document.getElementById('video-asset');
-            const source = document.createElement('source');
-            source.setAttribute('src', '/{{claimInfo.claimId}}/{{claimInfo.name}}.{{claimInfo.fileExt}}');
-            video.appendChild(source);
-            video.play();
-        },
-        showImage: function () {
-            console.log('showing image');
-            const asset = document.getElementById('image-asset');
-            asset.setAttribute('src', "/{{claimInfo.claimId}}/{{claimInfo.name}}.{{claimInfo.fileExt}}");
-        },
-        hideAssetStatus: function () {
-            const assetStatus = document.getElementById('asset-status');
-            assetStatus.hidden = true;
-        },
-        showAssetHolder: function () {
-            const assetHolder = document.getElementById('asset-holder');
-            assetHolder.hidden = false;
-        },
-        showSearchMessage: function () {
-            const searchMessage = document.getElementById('searching-message');
-            searchMessage.hidden = false;
-        },
-        showFailureMessage: function (msg) {
-            console.log(msg);
-            const searchMessage = document.getElementById('searching-message');
-            const failureMessage = document.getElementById('failure-message');
-            const errorMessage = document.getElementById('error-message');
-            searchMessage.hidden = true;
-            failureMessage.hidden = false;
-            errorMessage.innerText = msg;
-        },
-        checkClaimAvailability: function (claimName, claimId) {
-            console.log(`checking local availability for ${claimName}#${claimId}`)
-            var uri = `/api/local-file-available/${claimName}/${claimId}`;
-            var xhr = new XMLHttpRequest();
-            var that = this;
-            xhr.open("GET", uri, true);
-            xhr.onreadystatechange = function() {
-                if (xhr.readyState == 4) {
-                    const response = JSON.parse(xhr.response);
-                    if (xhr.status == 200) {
-                        if (response.message === true) {
-                            console.log('local asset is available on spee.ch')
-                            that.showAsset();
-                        } else {
-                            that.showSearchMessage();
-                            that.getAsset(claimName, claimId)
-                        }
-                    } else {
-                        console.log('get failed:', response);
-                        that.showFailureMessage('Well this sucks, but we can\'t seem to phone home');
-                    }
-                } else {
-                    console.log('xhr.readyState', xhr.readyState);
-                }
-            };
-            xhr.send();
-        },
-        getAsset: function(claimName, claimId) {
-            console.log(`getting ${claimName}#${claimId}`)
-            var uri = `/api/get-claim/${claimName}/${claimId}`;
-            var xhr = new XMLHttpRequest();
-            var that = this;
-            xhr.open("GET", uri, true);
-            xhr.onreadystatechange = function() {
-                if (xhr.readyState == 4) {
-                    const response = JSON.parse(xhr.response);
-                    if (xhr.status == 200) {
-                        console.log('get returned successfully', response);
-                        that.showAsset();
-                    } else {
-                        console.log('get failed:', response);
-                        that.showFailureMessage(`${response.message}`);
-                    }
-                } else {
-                    console.log('xhr.readyState', xhr.readyState);
-                }
-            };
-            xhr.send();
-        },
-    }
-
-    getAssetFunctions.checkClaimAvailability('{{claimInfo.name}}', '{{claimInfo.claimId}}');
+    showFunctions.setState('src', '{{claimInfo.name}}', '{{claimInfo.claimId}}', '{{claimInfo.fileExt}}');
+    showFunctions.setState('claimName', '{{claimInfo.name}}');
+    showFunctions.setState('claimId', '{{claimInfo.claimId}}');
+    showFunctions.setState('fileExt', '{{claimInfo.fileExt}}');
+    showFunctions.setState('contentType', '{{claimInfo.contentType}}');
+    console.log(showFunctions.state);
+    showFunctions.checkClaimAvailability();
 
 </script>
\ No newline at end of file
diff --git a/views/partials/video.handlebars b/views/partials/video.handlebars
index f3f46dbc..d968c652 100644
--- a/views/partials/video.handlebars
+++ b/views/partials/video.handlebars
@@ -6,6 +6,5 @@
 </video>
 
 <script type="text/javascript">
-
     showFunctions.addPlayPauseToVideo();
 </script>
\ No newline at end of file