diff --git a/javascript/src/iframe/viamapi-iframe.js b/javascript/src/iframe/viamapi-iframe.js
index 958679bc7f57f7ca7eb43cbfae850a220b3d5f28..25e867db8d1b3004d719e3a18be753728bb4384f 100644
--- a/javascript/src/iframe/viamapi-iframe.js
+++ b/javascript/src/iframe/viamapi-iframe.js
@@ -1286,12 +1286,12 @@ function extendPinCodeTtl(key, pinCode) {
       clearPinCodeTtl(key)
       return false
     } else {
-      var ttl = now.getTime() + 10 * 60 * 1000;
+      var ttl = now.getTime() + 24 * 60 * 60 * 1000;
       window.sessionStorage.setItem("pincodettls/" + key, ttl);
     }
   } else {
     var now = new Date();
-    var ttl = now.getTime() + 10 * 60 * 1000;
+    var ttl = now.getTime() + 24 * 60 * 60 * 1000;
     window.sessionStorage.setItem("pincodettls/" + key, ttl);
     window.sessionStorage.setItem("pincodes/" + key, pinCode);
   }
@@ -1362,8 +1362,7 @@ function executeRestfulFunction(type, that, fn, ...args) {
       fn.apply(that, args).then((response) => {
         if (response.data.code == "400" && response.data.status == "Bad session") {
           console.log("Trying to login again")
-          if (currentlyAuthenticatedIdentity != "" && currentlyAuthenticatedIdentity != null
-            && localStorage.getItem("didLogout") != "true") {
+          if(currentlyAuthenticatedIdentity != "" && currentlyAuthenticatedIdentity != null) {
             viamApi.identityLogin("previousaddeddevice").then((response1) => {
               if (response1.data.code == "200") {
                 //console.log(response.data.data)
@@ -1385,8 +1384,7 @@ function executeRestfulFunction(type, that, fn, ...args) {
               }
             });
           } else {
-            if (currentlyLoadedIdentity != "" && currentlyLoadedIdentity != null &&
-              localStorage.getItem("didLogout") != "true") {
+            if(currentlyLoadedIdentity != "" && currentlyLoadedIdentity != null) {
               viamApi.identityLogin("previousaddeddevice").then((response1) => {
                 if (response1.data.code == "200") {
                   //console.log(response.data.data)
@@ -1481,6 +1479,11 @@ function changeIdentityPinCodeInternal(key, oldPinCode, newPinCode) {
 
       console.log("Storing identity with pincode: " + identity.pinCode)
       setIdentityInLocalStorage(identity).then(() => {
+        result({
+          "data": "",
+          "code": "200",
+          "status": "Successfully changed pincode"
+        });
       }).catch((e) => {
         result({
           "data": "",
@@ -1488,6 +1491,12 @@ function changeIdentityPinCodeInternal(key, oldPinCode, newPinCode) {
           "status": "Cannot store identity " + e
         });
       });
+    }).catch((e) => {
+      result({
+        "data": "",
+        "code": "400",
+        "status": "Cannot get identity " + e
+      });
     });
   });
 }
@@ -1667,11 +1676,47 @@ const connection = Penpal.connectToParent({
         })
       });
     },
-    register(registerIdentity, email, name, surname, family, phoneNumber) {
+    confirmIdentificator(identity, confirmationCodeArg) {
+      return new Penpal.Promise(result => {
+        viamApi.setIdentity(identity.authentication.publicKey)
+
+        executeRestfulFunction("public", viamApi, viamApi.identityConfirmIdentificator,confirmationCodeArg).then(executeResult => {
+          result(executeResult);
+        });
+      });
+    },
+    identityGetIdentificatorByRegisterToken(identity, tokenArg) {
+      return new Penpal.Promise(result => {
+        viamApi.setIdentity(identity.authentication.publicKey)
+
+        executeRestfulFunction("public", viamApi, viamApi.identityGetIdentificatorByRegisterToken,tokenArg).then(executeResult => {
+          result(executeResult);
+        });
+      });
+    },
+    submitIdentificator(identity, identificatorArg, registerToken) {
+      return new Penpal.Promise(result => {
+        viamApi.setIdentity(identity.authentication.publicKey)
+
+        executeRestfulFunction("public", viamApi, viamApi.identitySubmitIdentificator,identificatorArg, registerToken).then(executeResult => {
+          result(executeResult);
+        });
+      });
+    },
+    submitRegisterClaims(identity, givennameArg,familynameArg,emailArg,phonenumberArg) {
+      return new Penpal.Promise(result => {
+        viamApi.setIdentity(identity.authentication.publicKey)
+
+        executeRestfulFunction("public", viamApi, viamApi.identitySubmitRegisterClaims,givennameArg,familynameArg,emailArg,phonenumberArg).then(executeResult => {
+          result(executeResult);
+        });
+      });
+    },
+    agreeOnRegistration(registerIdentity) {
       return new Penpal.Promise(result => {
         viamApi.setIdentity(registerIdentity.authentication.publicKey)
 
-        executeRestfulFunction("public", viamApi, viamApi.identityRegister, email, name,surname, family, phoneNumber).then(executeResult => {
+        executeRestfulFunction("public", viamApi, viamApi.identityAgreeOnRegistration).then(executeResult => {
           console.log("Profile updated in set identity")
 
           let sequence = Promise.resolve()
@@ -1729,7 +1774,6 @@ const connection = Penpal.connectToParent({
                 localStorage.setItem("token", token)
                 localStorage.setItem("authenticatedIdentity",
                   loginIdentity.authentication.publicKey)
-                localStorage.removeItem("didLogout")
                 setKeyForUUID(uuid, loginIdentity.authentication.publicKey)
                 currentlyAuthenticatedIdentity = loadedIdentities[loginIdentity.authentication.publicKey]
                 lastTimeGetProfile = 0;
@@ -1757,7 +1801,6 @@ const connection = Penpal.connectToParent({
                 localStorage.setItem("token", token)
                 localStorage.setItem("authenticatedIdentity",
                   loginIdentity.authentication.publicKey)
-                localStorage.removeItem("didLogout")
                 setKeyForUUID(uuid, loginIdentity.authentication.publicKey)
                 currentlyAuthenticatedIdentity = loadedIdentities[loginIdentity.authentication.publicKey]
                 lastTimeGetProfile = 0;
@@ -1897,7 +1940,6 @@ const connection = Penpal.connectToParent({
           localStorage.removeItem("uuid")
           localStorage.removeItem("token")
           localStorage.removeItem("authenticatedIdentity")
-          localStorage.setItem("didLogout", "true")
           delete loadedIdentities[authenticationPublicKey]
           //console.log("Set loaded identity in logout")
           currentlyLoadedIdentity = null
@@ -2270,6 +2312,17 @@ const connection = Penpal.connectToParent({
 })
 
 connection.promise.then(parent => {
+
+  window.addEventListener('storage', event => {
+    if (event.key === "authenticatedIdentity" && event.newValue === null) {
+      var publicKey = currentlyAuthenticatedIdentity.authentication.publicKey
+      currentlyLoadedIdentity = null
+      currentlyAuthenticatedIdentity = null
+      var event = createEvent("LogoutFromAnotherTab", "Logout", [publicKey])
+      parent.onEvent(event)
+    }
+  });
+
   var identities = localStorage.getItem("identities")
 
   console.log("Library loaded at: " + new Date().toISOString())
@@ -2423,7 +2476,7 @@ connection.promise.then(parent => {
                 lastTimeGetProfile = 0;
 
                 var identityToStore = currentlyAuthenticatedIdentity
-                event.payloads = []
+                event.payloads = [{fromQRCode: true}];
                 console.log(identityToStore)
                 setIdentityInLocalStorage(identityToStore).then(() => {
                   console.log(identityToStore)