diff --git a/frontend/pages/main/label.vue b/frontend/pages/main/label.vue
index d4aff8c4218bd51aff5f72ff18927798c41f1e7e..7a51dd0bf8633712c1274af51617e63bc4761e52 100644
--- a/frontend/pages/main/label.vue
+++ b/frontend/pages/main/label.vue
@@ -62,7 +62,7 @@ export default {
       images: {},
       keyword: '',
       isViewerActive: false,
-      perPage: 2,
+      perPage: 12,
       totalRows: 0,
       page: 1,
       timer: '',
@@ -129,6 +129,7 @@ export default {
       this.updateUI = !this.updateUI
     },
     async getAllImagesWithLabelStatus() {
+      this.images = {}
       await this.getAllImages(this.perPage, this.page, this.keyword)
       await this.getImageCurrentlyBeingLabelled()
     },
@@ -149,19 +150,28 @@ export default {
         throw error
       }
     },
-    openViewer (image) {
+    async openViewer (image) {
       console.log(image)
       if (!image.isCurrentlyLabeled) {
-        this.$router.push({ path: '/viewer', query: { url: image.url, id: image.id }})
+        var url = '/api/accesscontrol/' + image.id
+        try {
+          await this.$axios.get(url)
+          alert("This image is currently Labeled")
+        } catch (e) {
+          this.$router.push({ path: '/viewer', query: { url: image.url, id: image.id }})
+        }
       }
     },
     debounceWrapper (e) {
       this.page = 1
+      this.keyword = e.target.value
+      // alert(this.keyword)
       this.debounceInput(e)
     },
     // Only fires when user stops typing
-    debounceInput: debounce(async function (e) {
-      await this.getAllImages(this.perPage, this.page, e.target.value)
+    debounceInput: debounce(async function () {
+      await this.getAllImagesWithLabelStatus()
+      // await this.getAllImages(this.perPage, this.page, e.target.value)
     }, 500)
   }
 }
diff --git a/frontend/pages/viewer/index.vue b/frontend/pages/viewer/index.vue
index 54ef8832ac6129fcf863a8b1f744c5a0288fccf2..c1fecbe9b73224792eb4463e928bdee5703b7442 100644
--- a/frontend/pages/viewer/index.vue
+++ b/frontend/pages/viewer/index.vue
@@ -89,7 +89,7 @@ export default {
   },
   async created () {
     await this.startHeartBeat()
-    this.timer = setInterval(this.startHeartBeat, 5000)
+    this.timer = setInterval(this.startHeartBeat, 90000)
   },
   mounted () {
     this.image.url = this.$route.query.url
@@ -101,7 +101,6 @@ export default {
     } catch(error) {
       console.log(error)
     }
-    
     clearInterval(this.timer)
   },
   methods: {
@@ -113,10 +112,17 @@ export default {
       } catch (error) {
         this.showFailedAlert("An error occured", error)
         await this.closeViewer()
-      }      
+      }
+    },
+    handler () {
+      alert("tET")
     },
     async closeViewer () {
-      await this.deleteImageAccessControlByImageID(this.image.id)
+      try {
+        await this.deleteImageAccessControlByImageID(this.image.id)
+      } catch (error) {
+        console.log(error)
+      }
       this.$router.push('/main/label')
     },
     onMouseDownHandler (e) {