diff --git a/snxxx/1.1/NxpEseService.cpp b/snxxx/1.1/NxpEseService.cpp
index 3d23bb4..8b0b215 100755
--- a/snxxx/1.1/NxpEseService.cpp
+++ b/snxxx/1.1/NxpEseService.cpp
@@ -27,7 +27,9 @@
 #include "NxpEse.h"
 #include "SecureElement.h"
 #include "VirtualISO.h"
+#ifdef NXP_BOOTTIME_UPDATE
 #include "eSEClient.h"
+#endif
 
 // Generated HIDL files
 using android::OK;
@@ -65,9 +67,12 @@
       goto shutdown;
     }
     configureRpcThreadpool(1, true /*callerWillJoin*/);
-
+#ifdef NXP_BOOTTIME_UPDATE
     checkEseClientUpdate();
     ret = geteSETerminalId(terminalID);
+#else
+    ret = true;
+#endif
     ALOGI("Terminal val = %s", terminalID);
     if ((ret) && (strncmp(SEterminal, terminalID, 3) == 0)) {
       ALOGI("Terminal ID found");
@@ -98,14 +103,19 @@
       }
       ALOGI("Secure Element Service is ready");
     }
-
+#ifdef NXP_VISO_ENABLE
     ALOGI("Virtual ISO HAL Service 1.0 is starting.");
     virtual_iso_service = new VirtualISO();
     if (virtual_iso_service == nullptr) {
       ALOGE("Can not create an instance of Virtual ISO HAL Iface, exiting.");
       goto shutdown;
     }
+#ifdef NXP_BOOTTIME_UPDATE
     ret = geteUICCTerminalId(terminalID);
+#else
+    strncpy(terminalID, "eSE2", 4);
+    ret = true;
+#endif
     if ((ret) && (strncmp(SEterminal, terminalID, 3) == 0)) {
       status = virtual_iso_service->registerAsService(terminalID);
       if (status != OK) {
@@ -116,7 +126,10 @@
     }
 
     ALOGI("Virtual ISO: Secure Element Service is ready");
+#endif
+#ifdef NXP_BOOTTIME_UPDATE
     perform_eSEClientUpdate();
+#endif
     joinRpcThreadpool();
   } catch (const std::length_error& e) {
     ALOGE("Length Exception occurred = %s ", e.what());
diff --git a/snxxx/1.1/SecureElement.cpp b/snxxx/1.1/SecureElement.cpp
index 3a2834c..991add7 100755
--- a/snxxx/1.1/SecureElement.cpp
+++ b/snxxx/1.1/SecureElement.cpp
@@ -21,7 +21,9 @@
 #include <android-base/stringprintf.h>
 
 #include "NxpEse.h"
+#ifdef NXP_BOOTTIME_UPDATE
 #include "eSEClient.h"
+#endif
 #include "hal_nxpese.h"
 #include "phNxpEse_Apdu_Api.h"
 #include "phNxpEse_Api.h"
@@ -80,6 +82,7 @@
     clientCallback->linkToDeath(this, 0 /*cookie*/);
   }
   LOG(INFO) << "SecureElement::init called here";
+#ifdef NXP_BOOTTIME_UPDATE
   if (ese_update != ESE_UPDATE_COMPLETED) {
     mCallbackV1_0 = clientCallback;
     clientCallback->onStateChange(false);
@@ -88,6 +91,7 @@
     return Void();
     // Register
   }
+#endif
   if (mIsEseInitialized) {
     clientCallback->onStateChange(true);
     return Void();
@@ -137,6 +141,7 @@
     clientCallback->linkToDeath(this, 0 /*cookie*/);
   }
   LOG(INFO) << "SecureElement::init called here";
+#ifdef NXP_BOOTTIME_UPDATE
   if (ese_update != ESE_UPDATE_COMPLETED) {
     mCallbackV1_1 = clientCallback;
     clientCallback->onStateChange_1_1(false, "NXP SE update going on");
@@ -145,6 +150,7 @@
     return Void();
     // Register
   }
+#endif
   if (mIsEseInitialized) {
     clientCallback->onStateChange_1_1(true, "NXP SE HAL init ok");
     return Void();
diff --git a/snxxx/1.1/VirtualISO.cpp b/snxxx/1.1/VirtualISO.cpp
index 432de16..6b0748a 100755
--- a/snxxx/1.1/VirtualISO.cpp
+++ b/snxxx/1.1/VirtualISO.cpp
@@ -21,7 +21,9 @@
 
 #include "NxpEse.h"
 #include "SecureElement.h"
+#ifdef NXP_BOOTTIME_UPDATE
 #include "eSEClient.h"
+#endif
 #include "hal_nxpese.h"
 #include "phNxpEse_Apdu_Api.h"
 #include "phNxpEse_Api.h"
@@ -75,6 +77,7 @@
   } else {
     clientCallback->linkToDeath(this, 0 /*cookie*/);
   }
+#ifdef NXP_BOOTTIME_UPDATE
   if (ese_update != ESE_UPDATE_COMPLETED) {
     mCallbackV1_0 = clientCallback;
     clientCallback->onStateChange(false);
@@ -83,6 +86,7 @@
     return Void();
     // Register
   }
+#endif
   if (mIsEseInitialized) {
     clientCallback->onStateChange(true);
     return Void();
@@ -130,6 +134,7 @@
   } else {
     clientCallback->linkToDeath(this, 0 /*cookie*/);
   }
+#ifdef NXP_BOOTTIME_UPDATE
   if (ese_update != ESE_UPDATE_COMPLETED) {
     mCallbackV1_1 = clientCallback;
     clientCallback->onStateChange_1_1(false, "NXP SE update going on");
@@ -138,6 +143,7 @@
     return Void();
     // Register
   }
+#endif
   if (mIsEseInitialized) {
     clientCallback->onStateChange_1_1(true, "NXP VISIO HAL init ok");
     return Void();
