     case hkError(HKError)
     case error(Error)
     
-    var localizedDescription: String {
+    public var localizedDescription: String {
         switch self {
         case .hkError(let error): return error.localizedDescription
         case .error(let error): return error.localizedDescription
         }
     }
     
-    var code: HKError.Code {
+    public var code: HKError.Code {
         switch self {
         case .hkError(let error): return error.code
         case .error(let error): return HKError.Code.noError
         }
     }
     
-    static func from(_ error: Error) -> SHKError {
+    public static func from(_ error: Error) -> SHKError {
         if let hkError = error as? HKError {
             return SHKError.hkError(hkError)
         } else {

            sortDescriptors: nil,
            resultsHandler: resultsHandler)
        store.execute(query)
    }
    
    public func overwriteSample(at date: Date, id: HKQuantityTypeIdentifier, quantity: HKQuantity, metadata: [String: String]? = nil, completion: @escaping Callback<Bool>) {

    }
    
    public func requestHealthKitPermission(completion: @escaping Callback<Bool>) {
        guard (shareIdentifiers + readIdentifiers).count > 0 else {
            debugCrash(message: "You should set shareIdentifiers or readIdentifiers --- Must request authorization for at least one data type")
            return
        }
        
        store.requestAuthorization(
            toShare: types(identifiers: shareIdentifiers),
            read: types(identifiers: readIdentifiers)
