diff --git a/thermalUtils.cpp b/thermalUtils.cpp
index 200428a..fee8972 100644
--- a/thermalUtils.cpp
+++ b/thermalUtils.cpp
@@ -59,11 +59,9 @@
 	std::vector<struct therm_sensor> sensorList;
 	std::vector<struct target_therm_cfg> therm_cfg = cfg.fetchConfig();
 
-	is_sensor_init = false;
 	is_cdev_init = false;
 	ret = cmnInst.initThermalZones(therm_cfg);
 	if (ret > 0) {
-		is_sensor_init = true;
 		sensorList = cmnInst.fetch_sensor_list();
 		std::lock_guard<std::mutex> _lock(sens_cb_mutex);
 		for (struct therm_sensor sens: sensorList) {
@@ -81,6 +79,34 @@
 	}
 }
 
+bool ThermalUtils::isSensorInitialized()
+{
+	std::lock_guard<std::mutex> _lock(sens_cb_mutex);
+
+	if (thermalConfig.begin() == thermalConfig.end())
+		return false;
+
+	return true;
+}
+
+bool ThermalUtils::isSensorInitialized(TemperatureType type)
+{
+	std::unordered_map<std::string, struct therm_sensor>::iterator it;
+	std::lock_guard<std::mutex> _lock(sens_cb_mutex);
+
+	if (thermalConfig.begin() == thermalConfig.end())
+		return false;
+
+	for (it = thermalConfig.begin(); it != thermalConfig.end();
+			it++) {
+		struct therm_sensor& sens = it->second;
+		if (sens.t.type == type)
+			return true;
+	}
+
+	return false;
+}
+
 void ThermalUtils::Notify(struct therm_sensor& sens)
 {
 	int severity = cmnInst.estimateSeverity(sens);
diff --git a/thermalUtils.h b/thermalUtils.h
index e7f8a42..ca07cfa 100644
--- a/thermalUtils.h
+++ b/thermalUtils.h
@@ -56,14 +56,12 @@
 	public:
 		ThermalUtils(const ueventCB &inp_cb);
 		~ThermalUtils() = default;
-		bool isSensorInitialized()
-		{
-			return is_sensor_init;
-		};
 		bool isCdevInitialized()
 		{
 			return is_cdev_init;
 		};
+		bool isSensorInitialized();
+		bool isSensorInitialized(TemperatureType type);
 		int readTemperatures(std::vector<Temperature>& temp);
 		int readTemperatures(TemperatureType type,
                                             std::vector<Temperature>& temperatures);
@@ -74,7 +72,6 @@
 		int readCdevStates(cdevType type,
                                             std::vector<CoolingDevice>& cdev);
 	private:
-		bool is_sensor_init;
 		bool is_cdev_init;
 		ThermalConfig cfg;
 		ThermalCommon cmnInst;
