diff --git a/javascript/src/iframe/viamapi-iframe.js b/javascript/src/iframe/viamapi-iframe.js
index 91c0fd22bec45bbfedeccc7e8e7fb62a08b788a2..8e7a464bd8c20e55c1580ec73655c5bade19d13d 100644
--- a/javascript/src/iframe/viamapi-iframe.js
+++ b/javascript/src/iframe/viamapi-iframe.js
@@ -327,36 +327,6 @@ function loadIdentityInternal(identityKey, pinCode) {
   });
 }
 
-function changeIdentityPinCodeInternal(key, oldPinCode, newPinCode) {
-
-  return new Penpal.Promise(result => {
-    getIdentityFromLocalStorage(key, oldPinCode, false).then((identity) => {
-
-      identity.pinCode = newPinCode;
-
-      setIdentityInLocalStorage(identity).then(() => {
-        result({
-          "data": "",
-          "code": "200",
-          "status": "Successfully changed pincode"
-        });
-      }).catch((e) => {
-        result({
-          "data": "",
-          "code": "400",
-          "status": "Cannot store identity " + e
-        });
-      });
-    }).catch((e) => {
-      result({
-        "data": "",
-        "code": "400",
-        "status": "Cannot get identity " + e
-      });
-    });
-  });
-}
-
 function getCertificateForPassport(passportUUID, internal) {
 
   return new Penpal.Promise(certificateResult => {
@@ -501,8 +471,34 @@ const connection = Penpal.connectToParent({
     loadIdentity(identityKey, pinCode) {
       return loadIdentityInternal(identityKey, pinCode)
     },
-    changeIdentityPinCode(key, oldPinCode, newPinCode) {
-      return changeIdentityPinCodeInternal(key, oldPinCode, newPinCode)
+    checkIdentityPinCode: async (key, pinCode) => {
+      try {
+        const identity = await getIdentityFromLocalStorage(key, pinCode, false);
+
+        if (identity) {
+          return encodeResponse("200", null, "Pincode check successful");
+        } else {
+          return encodeResponse("400", null, "Pincode check failed");
+        }
+      } catch (e) {
+        return encodeResponse("400", e, "Pincode check error");
+      }
+    },
+    changeIdentityPinCode: async (key, oldPinCode, newPinCode) => {
+      try {
+        const identity = await getIdentityFromLocalStorage(key, oldPinCode, false);
+
+        if (identity) {
+          identity.pinCode = newPinCode;
+          await setIdentityInLocalStorage(identity);
+
+          return encodeResponse("200", null, "Successfully changed pincode");
+        } else {
+          return encodeResponse("400", null, "Identity not found");
+        }
+      } catch (e) {
+        return encodeResponse("400", e.message, "Change pincode error");
+      }
     },
     getIdentityProfile(identityKey) {
       return new Penpal.Promise(result => {
@@ -520,18 +516,15 @@ const connection = Penpal.connectToParent({
         }
       });
     },
-    clearIdentities() {
-      return new Penpal.Promise(result => {
-        var identitiesTemp = listIdentitiesFromLocalStorage();
+    clearIdentities: async () => {
+      destroyAuthentication();
 
-        for(var i in identitiesTemp) {
-          destroyIdentityFromLocalStorage(i)
-        }
-        result({"data" : "",
-          "code" : "200",
-          "status" : "Identities cleared"
-        })
-      });
+      const identitiesTemp = listIdentitiesFromLocalStorage();
+
+      for (const i in identitiesTemp) {
+        destroyIdentityFromLocalStorage(i);
+      }
+      return encodeResponse("200", "", "Identities cleared");
     },
     confirmIdentificator(identity, confirmationCodeArg) {
       return new Penpal.Promise(result => {
@@ -612,6 +605,7 @@ const connection = Penpal.connectToParent({
       }
 
       const deviceHash = await createDeviceHash(loginIdentity.authentication.publicKey);
+      window.viamApi.setSessionData("", "");
       window.viamApi.setDeviceHash(deviceHash);
       window.viamApi.setIdentity(loginIdentity.authentication.publicKey);
 
@@ -644,19 +638,6 @@ const connection = Penpal.connectToParent({
 
       return responseToClient;
     },
-    identityPullAvatarFromGravatar: async () => {
-      const authenticationPublicKey = localStorage.getItem("authenticatedIdentity");
-
-      if (
-        !authenticationPublicKey ||
-        !window.loadedIdentities[authenticationPublicKey] ||
-        !extendPinCodeTtl(authenticationPublicKey)
-      ) {
-        return encodeResponse("400", "", "Identity not authenticated");
-      }
-
-      return await executeRestfulFunction("private", viamApi, viamApi.identityPullAvatarFromGravatar);
-    },
     identityAddNewDevice() {
       return new Penpal.Promise(result => {
         const authenticationPublicKey = localStorage.getItem("authenticatedIdentity");
@@ -751,6 +732,7 @@ const connection = Penpal.connectToParent({
     },
     identityRestoreAccess(restoreAccessIdentity, identificator) {
       return new Penpal.Promise(result => {
+        viamApi.setSessionData("", "");
         viamApi.setIdentity(restoreAccessIdentity.authentication.publicKey);
 
         executeRestfulFunction("public", viamApi, viamApi.identityRestoreAccess, null, identificator).then(executeResult => {
@@ -1299,14 +1281,8 @@ connection.promise.then(parent => {
           for (let i = 0; i < eventsLen; i++) {
             const event = executeResult.data[i];
             switch (event.type) {
-              case "Authenticated" : {
-                const uuid = event.payloads[0];
-                const token = event.payloads[1];
-                handleIdentityLogin(window.currentlyLoadedIdentity, uuid, token);
-                const identityToStore = window.currentlyAuthenticatedIdentity;
-                event.payloads = [{fromQRCode: true}];
-                await setIdentityInLocalStorage(identityToStore);
-                await getProfileData(identityToStore);
+              case "DeviceConfirmed" : {
+                await setIdentityInLocalStorage(window.currentlyLoadedIdentity);
                 parent.onEvent(event);
                 break;
               }