         static let deviceGuruVersion = "github.com/InderKumarRathore/DeviceGuru.Version.Key"
     }
 
-    private var hardwareDetail: [String: Any]?
+    private lazy var hardwareDetail: [String: Any]? = {
+        guard let localHardwareDetail = loadHardwareDetailFromUserDefaultsIfLatest() else {
+            let allDevices = loadAllDeviceDictionaryFromPlist()
+            let hardwareDetail = allDevices[_hardwareString] as? [String: Any]
+            saveHardwareDetailToUserDefaults(hardwareDetail: hardwareDetail)
+            return hardwareDetail
+        }
+        return localHardwareDetail
+    }()
 
     private let _hardwareString: String = {
         var name: [Int32] = [CTL_HW, HW_MACHINE]

        return localStorage.object(forKey: LocalStorageKeys.hardwareDetail) as? [String: Any]
    }

    func saveHardwareDetailToUserDefaults() {
        localStorage.setValue(Self.libraryVersion, forKey: LocalStorageKeys.deviceGuruVersion)
        localStorage.setValue(hardwareDetail, forKey: LocalStorageKeys.hardwareDetail)
    }

    public init(localStorage: LocalStorage = UserDefaults.standard, plistPath: String? = nil) {
        self.localStorage = localStorage
        self.plistPath = plistPath
    }

    public var hardwareString: String { _hardwareString }
