From e939e5492ba0c26a6911132b094f3067229245ec Mon Sep 17 00:00:00 2001
From: Darren Black <drdaz7@gmail.com>
Date: Thu, 20 May 2021 13:56:48 +0200
Subject: [PATCH 1/6] Refactor and reorganisation for SPM

---
 .gitignore                                    |   2 +
 {Bolts/iOS => Bolts-iOS}/BFAppLink.h          |   4 +
 {Bolts/iOS => Bolts-iOS}/BFAppLink.m          |   5 +
 .../iOS => Bolts-iOS}/BFAppLinkNavigation.h   |   6 +-
 .../iOS => Bolts-iOS}/BFAppLinkNavigation.m   |  13 +-
 {Bolts/iOS => Bolts-iOS}/BFAppLinkResolving.h |   4 +
 .../BFAppLinkReturnToRefererController.h      |   7 +-
 .../BFAppLinkReturnToRefererController.m      |   4 +
 .../BFAppLinkReturnToRefererView.h            |   7 +-
 .../BFAppLinkReturnToRefererView.m            |   6 +-
 .../BFAppLinkReturnToRefererView_Internal.h   |   6 +-
 {Bolts/iOS => Bolts-iOS}/BFAppLinkTarget.h    |   4 +
 {Bolts/iOS => Bolts-iOS}/BFAppLinkTarget.m    |   4 +
 .../BFAppLink_Internal.h                      |   7 +-
 {Bolts/iOS => Bolts-iOS}/BFMeasurementEvent.h |   4 +
 {Bolts/iOS => Bolts-iOS}/BFMeasurementEvent.m |   4 +
 .../BFMeasurementEvent_Internal.h             |   6 +-
 {Bolts/iOS => Bolts-iOS}/BFURL.h              |   4 +
 {Bolts/iOS => Bolts-iOS}/BFURL.m              |   4 +
 .../Internal => Bolts-iOS}/BFURL_Internal.h   |   6 +-
 .../BFWebViewAppLinkResolver.h                |   5 +-
 .../BFWebViewAppLinkResolver.m                |  14 +-
 Bolts.xcodeproj/project.pbxproj               | 219 +++++++++---------
 .../contents.xcworkspacedata                  |   2 +-
 Bolts/{Common => }/BFCancellationToken.h      |   2 +-
 Bolts/{Common => }/BFCancellationToken.m      |   0
 .../BFCancellationTokenRegistration.h         |   0
 .../BFCancellationTokenRegistration.m         |   0
 .../{Common => }/BFCancellationTokenSource.h  |   0
 .../{Common => }/BFCancellationTokenSource.m  |   0
 Bolts/{Common => }/BFExecutor.h               |   0
 Bolts/{Common => }/BFExecutor.m               |   0
 Bolts/{Common => }/BFGeneric.h                |   0
 Bolts/{Common => }/BFTask.h                   |   4 +-
 Bolts/{Common => }/BFTask.m                   |   0
 Bolts/{Common => }/BFTaskCompletionSource.h   |   0
 Bolts/{Common => }/BFTaskCompletionSource.m   |   0
 Bolts/{Common => }/Bolts.h                    |  36 ++-
 Bolts/{Common => }/Bolts.m                    |   0
 Bolts/{Resources => }/Info.plist              |   0
 Bolts/en.lproj/Localizable.strings            | Bin 226 -> 0 bytes
 Bolts/{Resources => }/iOS.modulemap           |   0
 BoltsTests/AppLinkReturnToRefererViewTests.m  |   8 +
 BoltsTests/AppLinkTests.m                     |   8 +
 BoltsTests/CancellationTests.m                |   4 +
 BoltsTests/ExecutorTests.m                    |   4 +
 BoltsTests/TaskTests.m                        |   4 +
 Configurations/Bolts-iOS-Dynamic.xcconfig     |   4 +-
 Configurations/Bolts-iOS.xcconfig             |   4 +-
 Configurations/Bolts-macOS.xcconfig           |   2 +-
 Configurations/Bolts-tvOS-Dynamic.xcconfig    |   2 +-
 Configurations/Bolts-tvOS.xcconfig            |   2 +-
 Configurations/Bolts-watchOS-Dynamic.xcconfig |   2 +-
 Configurations/Bolts-watchOS.xcconfig         |   2 +-
 Configurations/BoltsTests-OSX.xcconfig        |   2 +-
 Package.swift                                 |  33 +++
 56 files changed, 325 insertions(+), 145 deletions(-)
 rename {Bolts/iOS => Bolts-iOS}/BFAppLink.h (95%)
 rename {Bolts/iOS => Bolts-iOS}/BFAppLink.m (96%)
 rename {Bolts/iOS => Bolts-iOS}/BFAppLinkNavigation.h (97%)
 rename {Bolts/iOS => Bolts-iOS}/BFAppLinkNavigation.m (98%)
 rename {Bolts/iOS => Bolts-iOS}/BFAppLinkResolving.h (92%)
 rename {Bolts/iOS => Bolts-iOS}/BFAppLinkReturnToRefererController.h (96%)
 rename {Bolts/iOS => Bolts-iOS}/BFAppLinkReturnToRefererController.m (99%)
 rename {Bolts/iOS => Bolts-iOS}/BFAppLinkReturnToRefererView.h (95%)
 rename {Bolts/iOS => Bolts-iOS}/BFAppLinkReturnToRefererView.m (98%)
 rename {Bolts/iOS/Internal => Bolts-iOS}/BFAppLinkReturnToRefererView_Internal.h (77%)
 rename {Bolts/iOS => Bolts-iOS}/BFAppLinkTarget.h (93%)
 rename {Bolts/iOS => Bolts-iOS}/BFAppLinkTarget.m (92%)
 rename {Bolts/iOS/Internal => Bolts-iOS}/BFAppLink_Internal.h (92%)
 rename {Bolts/iOS => Bolts-iOS}/BFMeasurementEvent.h (95%)
 rename {Bolts/iOS => Bolts-iOS}/BFMeasurementEvent.m (96%)
 rename {Bolts/iOS/Internal => Bolts-iOS}/BFMeasurementEvent_Internal.h (82%)
 rename {Bolts/iOS => Bolts-iOS}/BFURL.h (97%)
 rename {Bolts/iOS => Bolts-iOS}/BFURL.m (98%)
 rename {Bolts/iOS/Internal => Bolts-iOS}/BFURL_Internal.h (81%)
 rename {Bolts/iOS => Bolts-iOS}/BFWebViewAppLinkResolver.h (86%)
 rename {Bolts/iOS => Bolts-iOS}/BFWebViewAppLinkResolver.m (98%)
 rename Bolts/{Common => }/BFCancellationToken.h (95%)
 rename Bolts/{Common => }/BFCancellationToken.m (100%)
 rename Bolts/{Common => }/BFCancellationTokenRegistration.h (100%)
 rename Bolts/{Common => }/BFCancellationTokenRegistration.m (100%)
 rename Bolts/{Common => }/BFCancellationTokenSource.h (100%)
 rename Bolts/{Common => }/BFCancellationTokenSource.m (100%)
 rename Bolts/{Common => }/BFExecutor.h (100%)
 rename Bolts/{Common => }/BFExecutor.m (100%)
 rename Bolts/{Common => }/BFGeneric.h (100%)
 rename Bolts/{Common => }/BFTask.h (99%)
 rename Bolts/{Common => }/BFTask.m (100%)
 rename Bolts/{Common => }/BFTaskCompletionSource.h (100%)
 rename Bolts/{Common => }/BFTaskCompletionSource.m (100%)
 rename Bolts/{Common => }/Bolts.h (54%)
 rename Bolts/{Common => }/Bolts.m (100%)
 rename Bolts/{Resources => }/Info.plist (100%)
 delete mode 100644 Bolts/en.lproj/Localizable.strings
 rename Bolts/{Resources => }/iOS.modulemap (100%)
 create mode 100644 Package.swift

diff --git a/.gitignore b/.gitignore
index 455f60d..b1a6d27 100644
--- a/.gitignore
+++ b/.gitignore
@@ -32,3 +32,5 @@ Carthage/Build
 
 ## AppCode
 .idea/
+.build
+.swiftpm
diff --git a/Bolts/iOS/BFAppLink.h b/Bolts-iOS/BFAppLink.h
similarity index 95%
rename from Bolts/iOS/BFAppLink.h
rename to Bolts-iOS/BFAppLink.h
index aa89efc..3bebe3b 100644
--- a/Bolts/iOS/BFAppLink.h
+++ b/Bolts-iOS/BFAppLink.h
@@ -8,6 +8,8 @@
  *
  */
 
+#if TARGET_OS_IOS || TARGET_OS_SIMULATOR || TARGET_OS_MACCATALYST
+
 #import <Foundation/Foundation.h>
 
 /*! The version of the App Link protocol that this library supports */
@@ -47,3 +49,5 @@ FOUNDATION_EXPORT NSString *const BFAppLinkVersion;
 @property (nonatomic, strong, readonly) NSURL *webURL;
 
 @end
+
+#endif
diff --git a/Bolts/iOS/BFAppLink.m b/Bolts-iOS/BFAppLink.m
similarity index 96%
rename from Bolts/iOS/BFAppLink.m
rename to Bolts-iOS/BFAppLink.m
index 77fd311..d235c95 100644
--- a/Bolts/iOS/BFAppLink.m
+++ b/Bolts-iOS/BFAppLink.m
@@ -8,6 +8,8 @@
  *
  */
 
+#if TARGET_OS_IOS || TARGET_OS_SIMULATOR || TARGET_OS_MACCATALYST
+
 #import "BFAppLink_Internal.h"
 
 NSString *const BFAppLinkDataParameterName = @"al_applink_data";
@@ -60,3 +62,6 @@ NSString *const BFAppLinkVersion = @"1.0";
 }
 
 @end
+
+
+#endif
diff --git a/Bolts/iOS/BFAppLinkNavigation.h b/Bolts-iOS/BFAppLinkNavigation.h
similarity index 97%
rename from Bolts/iOS/BFAppLinkNavigation.h
rename to Bolts-iOS/BFAppLinkNavigation.h
index 4b8a71e..5db1b76 100644
--- a/Bolts/iOS/BFAppLinkNavigation.h
+++ b/Bolts-iOS/BFAppLinkNavigation.h
@@ -8,9 +8,11 @@
  *
  */
 
+#if TARGET_OS_IOS || TARGET_OS_SIMULATOR || TARGET_OS_MACCATALYST
+
 #import <Foundation/Foundation.h>
 
-#import <Bolts/BFAppLink.h>
+#import "BFAppLink.h"
 
 /*!
  The result of calling navigate on a BFAppLinkNavigation
@@ -112,3 +114,5 @@ NS_EXTENSION_UNAVAILABLE_IOS("Not available in app extension")
 + (void)setDefaultResolver:(id<BFAppLinkResolving>)resolver;
 
 @end
+
+#endif
diff --git a/Bolts/iOS/BFAppLinkNavigation.m b/Bolts-iOS/BFAppLinkNavigation.m
similarity index 98%
rename from Bolts/iOS/BFAppLinkNavigation.m
rename to Bolts-iOS/BFAppLinkNavigation.m
index 7ea12de..470260e 100644
--- a/Bolts/iOS/BFAppLinkNavigation.m
+++ b/Bolts-iOS/BFAppLinkNavigation.m
@@ -8,12 +8,21 @@
  *
  */
 
-#import "BFAppLinkNavigation.h"
+#if TARGET_OS_IOS || TARGET_OS_SIMULATOR || TARGET_OS_MACCATALYST
+
+#import <UIKit/UIKit.h>
 
+#if SWIFT_PACKAGE
+#import "../Bolts/Bolts.h"
+#else
 #import <Bolts/Bolts.h>
+#endif
 
+#import "BFAppLinkNavigation.h"
+#import "BFAppLinkTarget.h"
 #import "BFMeasurementEvent_Internal.h"
 #import "BFAppLink_Internal.h"
+#import "BFWebViewAppLinkResolver.h"
 
 FOUNDATION_EXPORT NSString *const BFAppLinkDataParameterName;
 FOUNDATION_EXPORT NSString *const BFAppLinkTargetKeyName;
@@ -282,3 +291,5 @@ static id<BFAppLinkResolving> defaultResolver;
 }
 
 @end
+
+#endif
diff --git a/Bolts/iOS/BFAppLinkResolving.h b/Bolts-iOS/BFAppLinkResolving.h
similarity index 92%
rename from Bolts/iOS/BFAppLinkResolving.h
rename to Bolts-iOS/BFAppLinkResolving.h
index 5c78bff..1e00d62 100644
--- a/Bolts/iOS/BFAppLinkResolving.h
+++ b/Bolts-iOS/BFAppLinkResolving.h
@@ -8,6 +8,8 @@
  *
  */
 
+#if TARGET_OS_IOS || TARGET_OS_SIMULATOR || TARGET_OS_MACCATALYST
+
 #import <Foundation/Foundation.h>
 
 @class BFTask;
@@ -28,3 +30,5 @@
 - (BFTask *)appLinkFromURLInBackground:(NSURL *)url NS_EXTENSION_UNAVAILABLE_IOS("Not available in app extension");
 
 @end
+
+#endif
diff --git a/Bolts/iOS/BFAppLinkReturnToRefererController.h b/Bolts-iOS/BFAppLinkReturnToRefererController.h
similarity index 96%
rename from Bolts/iOS/BFAppLinkReturnToRefererController.h
rename to Bolts-iOS/BFAppLinkReturnToRefererController.h
index 436c528..9aab120 100644
--- a/Bolts/iOS/BFAppLinkReturnToRefererController.h
+++ b/Bolts-iOS/BFAppLinkReturnToRefererController.h
@@ -8,10 +8,13 @@
  *
  */
 
+#if TARGET_OS_IOS || TARGET_OS_SIMULATOR || TARGET_OS_MACCATALYST
+
 #import <Foundation/Foundation.h>
 #import <UIKit/UIKit.h>
 
-#import <Bolts/BFAppLinkReturnToRefererView.h>
+
+#import "BFAppLinkReturnToRefererView.h"
 
 @class BFAppLink;
 @class BFAppLinkReturnToRefererController;
@@ -86,3 +89,5 @@ NS_EXTENSION_UNAVAILABLE_IOS("Not available in app extension")
 - (void)closeViewAnimated:(BOOL)animated;
 
 @end
+
+#endif
diff --git a/Bolts/iOS/BFAppLinkReturnToRefererController.m b/Bolts-iOS/BFAppLinkReturnToRefererController.m
similarity index 99%
rename from Bolts/iOS/BFAppLinkReturnToRefererController.m
rename to Bolts-iOS/BFAppLinkReturnToRefererController.m
index 045a3e2..5aab464 100644
--- a/Bolts/iOS/BFAppLinkReturnToRefererController.m
+++ b/Bolts-iOS/BFAppLinkReturnToRefererController.m
@@ -8,6 +8,8 @@
  *
  */
 
+#if TARGET_OS_IOS || TARGET_OS_SIMULATOR || TARGET_OS_MACCATALYST
+
 #import "BFAppLinkReturnToRefererController.h"
 
 #import "BFAppLink.h"
@@ -228,3 +230,5 @@ static const CFTimeInterval kBFViewAnimationDuration = 0.25f;
 }
 
 @end
+
+#endif
diff --git a/Bolts/iOS/BFAppLinkReturnToRefererView.h b/Bolts-iOS/BFAppLinkReturnToRefererView.h
similarity index 95%
rename from Bolts/iOS/BFAppLinkReturnToRefererView.h
rename to Bolts-iOS/BFAppLinkReturnToRefererView.h
index f62bc66..f26327f 100644
--- a/Bolts/iOS/BFAppLinkReturnToRefererView.h
+++ b/Bolts-iOS/BFAppLinkReturnToRefererView.h
@@ -8,10 +8,13 @@
  *
  */
 
+#if TARGET_OS_IOS || TARGET_OS_SIMULATOR || TARGET_OS_MACCATALYST
+
 #import <Foundation/Foundation.h>
+
 #import <UIKit/UIKit.h>
 
-#import <Bolts/BFAppLinkNavigation.h>
+#import "BFAppLinkNavigation.h"
 
 @class BFAppLinkReturnToRefererView;
 @class BFURL;
@@ -76,3 +79,5 @@ NS_EXTENSION_UNAVAILABLE_IOS("Not available in app extension")
 @property (nonatomic, assign) BOOL closed;
 
 @end
+
+#endif
diff --git a/Bolts/iOS/BFAppLinkReturnToRefererView.m b/Bolts-iOS/BFAppLinkReturnToRefererView.m
similarity index 98%
rename from Bolts/iOS/BFAppLinkReturnToRefererView.m
rename to Bolts-iOS/BFAppLinkReturnToRefererView.m
index f2d0e79..07c0b51 100644
--- a/Bolts/iOS/BFAppLinkReturnToRefererView.m
+++ b/Bolts-iOS/BFAppLinkReturnToRefererView.m
@@ -8,6 +8,8 @@
  *
  */
 
+#if TARGET_OS_IOS || TARGET_OS_SIMULATOR || TARGET_OS_MACCATALYST
+
 #import "BFAppLinkReturnToRefererView.h"
 
 #import "BFAppLink.h"
@@ -244,7 +246,7 @@ static const CGFloat BFCloseButtonHeight = 12.0;
         return nil;
     }
 
-    NSString *format = NSLocalizedString(@"Touch to return to %1$@", @"Format for the string to return to a calling app.");
+    NSString *format = @"Touch to return to %1$@";
 
     return [NSString stringWithFormat:format, refererName];
 }
@@ -266,3 +268,5 @@ static const CGFloat BFCloseButtonHeight = 12.0;
 }
 
 @end
+
+#endif
diff --git a/Bolts/iOS/Internal/BFAppLinkReturnToRefererView_Internal.h b/Bolts-iOS/BFAppLinkReturnToRefererView_Internal.h
similarity index 77%
rename from Bolts/iOS/Internal/BFAppLinkReturnToRefererView_Internal.h
rename to Bolts-iOS/BFAppLinkReturnToRefererView_Internal.h
index 8b85823..2f4140a 100644
--- a/Bolts/iOS/Internal/BFAppLinkReturnToRefererView_Internal.h
+++ b/Bolts-iOS/BFAppLinkReturnToRefererView_Internal.h
@@ -8,10 +8,14 @@
  *
  */
 
-#import <Bolts/BFAppLinkReturnToRefererView.h>
+#if TARGET_OS_IOS || TARGET_OS_SIMULATOR || TARGET_OS_MACCATALYST
+
+#import "BFAppLinkReturnToRefererView.h"
 
 @interface BFAppLinkReturnToRefererView (Internal)
 
 - (CGFloat)statusBarHeight;
 
 @end
+
+#endif
diff --git a/Bolts/iOS/BFAppLinkTarget.h b/Bolts-iOS/BFAppLinkTarget.h
similarity index 93%
rename from Bolts/iOS/BFAppLinkTarget.h
rename to Bolts-iOS/BFAppLinkTarget.h
index 6172126..5ce3874 100644
--- a/Bolts/iOS/BFAppLinkTarget.h
+++ b/Bolts-iOS/BFAppLinkTarget.h
@@ -8,6 +8,8 @@
  *
  */
 
+#if TARGET_OS_IOS || TARGET_OS_SIMULATOR || TARGET_OS_MACCATALYST
+
 #import <Foundation/Foundation.h>
 
 /*!
@@ -31,3 +33,5 @@
 @property (nonatomic, copy, readonly) NSString *appName;
 
 @end
+
+#endif
diff --git a/Bolts/iOS/BFAppLinkTarget.m b/Bolts-iOS/BFAppLinkTarget.m
similarity index 92%
rename from Bolts/iOS/BFAppLinkTarget.m
rename to Bolts-iOS/BFAppLinkTarget.m
index 5518cba..ce9c181 100644
--- a/Bolts/iOS/BFAppLinkTarget.m
+++ b/Bolts-iOS/BFAppLinkTarget.m
@@ -8,6 +8,8 @@
  *
  */
 
+#if TARGET_OS_IOS || TARGET_OS_SIMULATOR || TARGET_OS_MACCATALYST
+
 #import "BFAppLinkTarget.h"
 
 @interface BFAppLinkTarget ()
@@ -31,3 +33,5 @@
 }
 
 @end
+
+#endif
diff --git a/Bolts/iOS/Internal/BFAppLink_Internal.h b/Bolts-iOS/BFAppLink_Internal.h
similarity index 92%
rename from Bolts/iOS/Internal/BFAppLink_Internal.h
rename to Bolts-iOS/BFAppLink_Internal.h
index aeeaa53..81db73a 100644
--- a/Bolts/iOS/Internal/BFAppLink_Internal.h
+++ b/Bolts-iOS/BFAppLink_Internal.h
@@ -8,7 +8,9 @@
  *
  */
 
-#import <Bolts/BFAppLink.h>
+#if TARGET_OS_IOS || TARGET_OS_SIMULATOR || TARGET_OS_MACCATALYST
+
+#import "BFAppLink.h"
 
 FOUNDATION_EXPORT NSString *const BFAppLinkDataParameterName;
 FOUNDATION_EXPORT NSString *const BFAppLinkTargetKeyName;
@@ -30,3 +32,6 @@ FOUNDATION_EXPORT NSString *const BFAppLinkRefererUrl;
 @property (nonatomic, assign, readonly, getter=isBackToReferrer) BOOL backToReferrer;
 
 @end
+
+
+#endif
diff --git a/Bolts/iOS/BFMeasurementEvent.h b/Bolts-iOS/BFMeasurementEvent.h
similarity index 95%
rename from Bolts/iOS/BFMeasurementEvent.h
rename to Bolts-iOS/BFMeasurementEvent.h
index b3173fc..4df48b7 100644
--- a/Bolts/iOS/BFMeasurementEvent.h
+++ b/Bolts-iOS/BFMeasurementEvent.h
@@ -8,6 +8,8 @@
  *
  */
 
+#if TARGET_OS_IOS || TARGET_OS_SIMULATOR || TARGET_OS_MACCATALYST
+
 #import <Foundation/Foundation.h>
 
 /*! The name of the notification posted by BFMeasurementEvent */
@@ -43,3 +45,5 @@ FOUNDATION_EXPORT NSString *const BFAppLinkNavigateBackToReferrerEventName;
 @interface BFMeasurementEvent : NSObject
 
 @end
+
+#endif
diff --git a/Bolts/iOS/BFMeasurementEvent.m b/Bolts-iOS/BFMeasurementEvent.m
similarity index 96%
rename from Bolts/iOS/BFMeasurementEvent.m
rename to Bolts-iOS/BFMeasurementEvent.m
index e3e6cde..276758d 100644
--- a/Bolts/iOS/BFMeasurementEvent.m
+++ b/Bolts-iOS/BFMeasurementEvent.m
@@ -8,6 +8,8 @@
  *
  */
 
+#if TARGET_OS_IOS || TARGET_OS_SIMULATOR || TARGET_OS_MACCATALYST
+
 #import "BFMeasurementEvent_Internal.h"
 
 NSString *const BFMeasurementEventNotificationName = @"com.parse.bolts.measurement_event";
@@ -60,3 +62,5 @@ __attribute__((noinline)) void warnOnMissingEventName() {
 }
 
 @end
+
+#endif
diff --git a/Bolts/iOS/Internal/BFMeasurementEvent_Internal.h b/Bolts-iOS/BFMeasurementEvent_Internal.h
similarity index 82%
rename from Bolts/iOS/Internal/BFMeasurementEvent_Internal.h
rename to Bolts-iOS/BFMeasurementEvent_Internal.h
index 7d46fd0..ac36b67 100644
--- a/Bolts/iOS/Internal/BFMeasurementEvent_Internal.h
+++ b/Bolts-iOS/BFMeasurementEvent_Internal.h
@@ -8,7 +8,9 @@
  *
  */
 
-#import <Bolts/BFMeasurementEvent.h>
+#if TARGET_OS_IOS || TARGET_OS_SIMULATOR || TARGET_OS_MACCATALYST
+
+#import "BFMeasurementEvent.h"
 /*!
  Provides methods for posting notifications from the Bolts framework
  */
@@ -17,3 +19,5 @@
 + (void)postNotificationForEventName:(NSString *)name args:(NSDictionary *)args;
 
 @end
+
+#endif
diff --git a/Bolts/iOS/BFURL.h b/Bolts-iOS/BFURL.h
similarity index 97%
rename from Bolts/iOS/BFURL.h
rename to Bolts-iOS/BFURL.h
index 924c91d..7ad4c5a 100644
--- a/Bolts/iOS/BFURL.h
+++ b/Bolts-iOS/BFURL.h
@@ -8,6 +8,8 @@
  *
  */
 
+#if TARGET_OS_IOS || TARGET_OS_SIMULATOR || TARGET_OS_MACCATALYST
+
 #import <Foundation/Foundation.h>
 
 @class BFAppLink;
@@ -73,3 +75,5 @@
 @property (nonatomic, strong, readonly) NSDictionary *inputQueryParameters;
 
 @end
+
+#endif
diff --git a/Bolts/iOS/BFURL.m b/Bolts-iOS/BFURL.m
similarity index 98%
rename from Bolts/iOS/BFURL.m
rename to Bolts-iOS/BFURL.m
index 14a1384..1266df6 100644
--- a/Bolts/iOS/BFURL.m
+++ b/Bolts-iOS/BFURL.m
@@ -8,6 +8,8 @@
  *
  */
 
+#if TARGET_OS_IOS || TARGET_OS_SIMULATOR || TARGET_OS_MACCATALYST
+
 #import "BFURL_Internal.h"
 #import "BFAppLink_Internal.h"
 #import "BFAppLinkTarget.h"
@@ -140,3 +142,5 @@
 }
 
 @end
+
+#endif
diff --git a/Bolts/iOS/Internal/BFURL_Internal.h b/Bolts-iOS/BFURL_Internal.h
similarity index 81%
rename from Bolts/iOS/Internal/BFURL_Internal.h
rename to Bolts-iOS/BFURL_Internal.h
index 03b6bc6..ac90288 100644
--- a/Bolts/iOS/Internal/BFURL_Internal.h
+++ b/Bolts-iOS/BFURL_Internal.h
@@ -8,8 +8,12 @@
  *
  */
 
-#import <Bolts/BFURL.h>
+#if TARGET_OS_IOS || TARGET_OS_SIMULATOR || TARGET_OS_MACCATALYST
+
+#import "BFURL.h"
 
 @interface BFURL (Internal)
 + (BFURL *)URLForRenderBackToReferrerBarURL:(NSURL *)url;
 @end
+
+#endif
diff --git a/Bolts/iOS/BFWebViewAppLinkResolver.h b/Bolts-iOS/BFWebViewAppLinkResolver.h
similarity index 86%
rename from Bolts/iOS/BFWebViewAppLinkResolver.h
rename to Bolts-iOS/BFWebViewAppLinkResolver.h
index d46f5a0..1122b10 100644
--- a/Bolts/iOS/BFWebViewAppLinkResolver.h
+++ b/Bolts-iOS/BFWebViewAppLinkResolver.h
@@ -8,9 +8,11 @@
  *
  */
 
+#if TARGET_OS_IOS || TARGET_OS_SIMULATOR || TARGET_OS_MACCATALYST
+
 #import <Foundation/Foundation.h>
 
-#import <Bolts/BFAppLinkResolving.h>
+#import "BFAppLinkResolving.h"
 
 /*!
  A reference implementation for an App Link resolver that uses a hidden WKWebView
@@ -25,3 +27,4 @@
 
 @end
 
+#endif
diff --git a/Bolts/iOS/BFWebViewAppLinkResolver.m b/Bolts-iOS/BFWebViewAppLinkResolver.m
similarity index 98%
rename from Bolts/iOS/BFWebViewAppLinkResolver.m
rename to Bolts-iOS/BFWebViewAppLinkResolver.m
index a862b7f..bb44cbb 100644
--- a/Bolts/iOS/BFWebViewAppLinkResolver.m
+++ b/Bolts-iOS/BFWebViewAppLinkResolver.m
@@ -8,14 +8,24 @@
  *
  */
 
-#import <WebKit/WebKit.h>
+#if TARGET_OS_IOS || TARGET_OS_SIMULATOR || TARGET_OS_MACCATALYST
 
+#import <WebKit/WebKit.h>
 #import "BFWebViewAppLinkResolver.h"
 #import "BFAppLink.h"
 #import "BFAppLinkTarget.h"
+
+#if SWIFT_PACKAGE
+#import "../Bolts/BFTask.h"
+#import "../Bolts/BFTaskCompletionSource.h"
+#import "../Bolts/BFExecutor.h"
+#else
 #import "BFTask.h"
 #import "BFTaskCompletionSource.h"
 #import "BFExecutor.h"
+#endif
+
+
 
 // Defines JavaScript to extract app link tags from HTML content
 static NSString *const BFWebViewAppLinkResolverTagExtractionJavaScript = @""
@@ -308,3 +318,5 @@ static NSString *const BFWebViewAppLinkResolverShouldFallbackKey = @"should_fall
 }
 
 @end
+
+#endif
diff --git a/Bolts.xcodeproj/project.pbxproj b/Bolts.xcodeproj/project.pbxproj
index 90f4c93..0a43cf3 100644
--- a/Bolts.xcodeproj/project.pbxproj
+++ b/Bolts.xcodeproj/project.pbxproj
@@ -12,7 +12,6 @@
 		1D5D7DAA1BE3CE8200FD67C7 /* BFAppLinkTarget.m in Sources */ = {isa = PBXBuildFile; fileRef = 8103FA6319900A84000BAE3F /* BFAppLinkTarget.m */; };
 		1D5D7DAB1BE3CE8200FD67C7 /* BFAppLinkReturnToRefererView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8103FA6019900A84000BAE3F /* BFAppLinkReturnToRefererView.m */; };
 		1D5D7DAC1BE3CE8200FD67C7 /* BFTask.m in Sources */ = {isa = PBXBuildFile; fileRef = 8103FA5119900A84000BAE3F /* BFTask.m */; };
-		1D5D7DAD1BE3CE8200FD67C7 /* Bolts.m in Sources */ = {isa = PBXBuildFile; fileRef = 8103FA5519900A84000BAE3F /* Bolts.m */; };
 		1D5D7DAE1BE3CE8200FD67C7 /* BFCancellationTokenRegistration.m in Sources */ = {isa = PBXBuildFile; fileRef = 7CA39C911ADE715400DD78CC /* BFCancellationTokenRegistration.m */; };
 		1D5D7DAF1BE3CE8200FD67C7 /* BFCancellationTokenSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 7C60AEC21ACF093D00747DD7 /* BFCancellationTokenSource.m */; };
 		1D5D7DB01BE3CE8200FD67C7 /* BFMeasurementEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = B242FAB919A567660097ECAE /* BFMeasurementEvent.m */; };
@@ -35,7 +34,6 @@
 		1D5D7DC61BE3CE8200FD67C7 /* BFURL.h in Headers */ = {isa = PBXBuildFile; fileRef = 8103FA6419900A84000BAE3F /* BFURL.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		1D5D7DC71BE3CE8200FD67C7 /* BFTaskCompletionSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 8103FA5219900A84000BAE3F /* BFTaskCompletionSource.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		1D5D7DCA1BE3CE8200FD67C7 /* BFMeasurementEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = B242FAB819A567660097ECAE /* BFMeasurementEvent.h */; settings = {ATTRIBUTES = (Public, ); }; };
-		1D5D7DCC1BE3CE8200FD67C7 /* Bolts.h in Headers */ = {isa = PBXBuildFile; fileRef = 8103FA5419900A84000BAE3F /* Bolts.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		1D5D7DCD1BE3CE8200FD67C7 /* BFCancellationToken.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C60AEBD1ACF08F300747DD7 /* BFCancellationToken.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		1D5D7DCE1BE3CE8200FD67C7 /* BFAppLink.h in Headers */ = {isa = PBXBuildFile; fileRef = 8103FA5819900A84000BAE3F /* BFAppLink.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		1D5D7DCF1BE3CE8200FD67C7 /* BFAppLinkReturnToRefererController.h in Headers */ = {isa = PBXBuildFile; fileRef = 8103FA5D19900A84000BAE3F /* BFAppLinkReturnToRefererController.h */; settings = {ATTRIBUTES = (Public, ); }; };
@@ -46,7 +44,6 @@
 		1EC3016D18CDAA8400D06D07 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EC3016C18CDAA8400D06D07 /* main.m */; };
 		1EC3017118CDAA8400D06D07 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EC3017018CDAA8400D06D07 /* AppDelegate.m */; };
 		1EC3017318CDAA8400D06D07 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 1EC3017218CDAA8400D06D07 /* Images.xcassets */; };
-		1EC3019118CDABCE00D06D07 /* AppLinkTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EC3019018CDABCE00D06D07 /* AppLinkTests.m */; };
 		46A4AE4424094C690022BB98 /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 46A4AE4324094C690022BB98 /* WebKit.framework */; };
 		46A4AE4524094DD70022BB98 /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 46A4AE4324094C690022BB98 /* WebKit.framework */; };
 		46D245272409796A00AB92BE /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 46A4AE4324094C690022BB98 /* WebKit.framework */; };
@@ -61,7 +58,6 @@
 		8103FA6919900A84000BAE3F /* BFExecutor.m in Sources */ = {isa = PBXBuildFile; fileRef = 8103FA4F19900A84000BAE3F /* BFExecutor.m */; };
 		8103FA6B19900A84000BAE3F /* BFTask.m in Sources */ = {isa = PBXBuildFile; fileRef = 8103FA5119900A84000BAE3F /* BFTask.m */; };
 		8103FA6D19900A84000BAE3F /* BFTaskCompletionSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 8103FA5319900A84000BAE3F /* BFTaskCompletionSource.m */; };
-		8103FA6F19900A84000BAE3F /* Bolts.m in Sources */ = {isa = PBXBuildFile; fileRef = 8103FA5519900A84000BAE3F /* Bolts.m */; };
 		8160B82C1DE6277200C6E285 /* BFGeneric.h in Headers */ = {isa = PBXBuildFile; fileRef = 8160B82B1DE6277200C6E285 /* BFGeneric.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		8160B82D1DE6277200C6E285 /* BFGeneric.h in Headers */ = {isa = PBXBuildFile; fileRef = 8160B82B1DE6277200C6E285 /* BFGeneric.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		8160B82E1DE6277200C6E285 /* BFGeneric.h in Headers */ = {isa = PBXBuildFile; fileRef = 8160B82B1DE6277200C6E285 /* BFGeneric.h */; settings = {ATTRIBUTES = (Public, ); }; };
@@ -71,7 +67,6 @@
 		8160B8321DE6277200C6E285 /* BFGeneric.h in Headers */ = {isa = PBXBuildFile; fileRef = 8160B82B1DE6277200C6E285 /* BFGeneric.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		8178F9861BB0F87700AD289D /* BFTaskCompletionSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 8103FA5319900A84000BAE3F /* BFTaskCompletionSource.m */; };
 		8178F9871BB0F87700AD289D /* BFTask.m in Sources */ = {isa = PBXBuildFile; fileRef = 8103FA5119900A84000BAE3F /* BFTask.m */; };
-		8178F9881BB0F87700AD289D /* Bolts.m in Sources */ = {isa = PBXBuildFile; fileRef = 8103FA5519900A84000BAE3F /* Bolts.m */; };
 		8178F9891BB0F87700AD289D /* BFCancellationTokenRegistration.m in Sources */ = {isa = PBXBuildFile; fileRef = 7CA39C911ADE715400DD78CC /* BFCancellationTokenRegistration.m */; };
 		8178F98A1BB0F87700AD289D /* BFCancellationTokenSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 7C60AEC21ACF093D00747DD7 /* BFCancellationTokenSource.m */; };
 		8178F98B1BB0F87700AD289D /* BFExecutor.m in Sources */ = {isa = PBXBuildFile; fileRef = 8103FA4F19900A84000BAE3F /* BFExecutor.m */; };
@@ -82,14 +77,12 @@
 		8178F9921BB0F87700AD289D /* BFCancellationTokenSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C60AEC11ACF093D00747DD7 /* BFCancellationTokenSource.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		8178F9931BB0F87700AD289D /* BFExecutor.h in Headers */ = {isa = PBXBuildFile; fileRef = 8103FA4E19900A84000BAE3F /* BFExecutor.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		8178F9951BB0F87700AD289D /* BFTaskCompletionSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 8103FA5219900A84000BAE3F /* BFTaskCompletionSource.h */; settings = {ATTRIBUTES = (Public, ); }; };
-		8178F9971BB0F87700AD289D /* Bolts.h in Headers */ = {isa = PBXBuildFile; fileRef = 8103FA5419900A84000BAE3F /* Bolts.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		8178F9981BB0F87700AD289D /* BFCancellationToken.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C60AEBD1ACF08F300747DD7 /* BFCancellationToken.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		818ADC6A1BE1A7FB00C8006C /* Bolts.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F5AFCA021BA752750076E927 /* Bolts.framework */; };
 		818ADC6B1BE1A80300C8006C /* Bolts.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 81ED946E1BE14B5200795F05 /* Bolts.framework */; };
 		818ADC6C1BE1A80F00C8006C /* Bolts.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 81ED94291BE147CF00795F05 /* Bolts.framework */; };
 		819573DB1C2B8ECB00BFCA39 /* BFTaskCompletionSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 8103FA5319900A84000BAE3F /* BFTaskCompletionSource.m */; };
 		819573DC1C2B8ECB00BFCA39 /* BFTask.m in Sources */ = {isa = PBXBuildFile; fileRef = 8103FA5119900A84000BAE3F /* BFTask.m */; };
-		819573DD1C2B8ECB00BFCA39 /* Bolts.m in Sources */ = {isa = PBXBuildFile; fileRef = 8103FA5519900A84000BAE3F /* Bolts.m */; };
 		819573DE1C2B8ECB00BFCA39 /* BFCancellationTokenRegistration.m in Sources */ = {isa = PBXBuildFile; fileRef = 7CA39C911ADE715400DD78CC /* BFCancellationTokenRegistration.m */; };
 		819573DF1C2B8ECB00BFCA39 /* BFCancellationTokenSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 7C60AEC21ACF093D00747DD7 /* BFCancellationTokenSource.m */; };
 		819573E01C2B8ECB00BFCA39 /* BFExecutor.m in Sources */ = {isa = PBXBuildFile; fileRef = 8103FA4F19900A84000BAE3F /* BFExecutor.m */; };
@@ -100,18 +93,8 @@
 		819573E71C2B8ECB00BFCA39 /* BFCancellationTokenSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C60AEC11ACF093D00747DD7 /* BFCancellationTokenSource.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		819573E81C2B8ECB00BFCA39 /* BFExecutor.h in Headers */ = {isa = PBXBuildFile; fileRef = 8103FA4E19900A84000BAE3F /* BFExecutor.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		819573EA1C2B8ECB00BFCA39 /* BFTaskCompletionSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 8103FA5219900A84000BAE3F /* BFTaskCompletionSource.h */; settings = {ATTRIBUTES = (Public, ); }; };
-		819573EC1C2B8ECB00BFCA39 /* Bolts.h in Headers */ = {isa = PBXBuildFile; fileRef = 8103FA5419900A84000BAE3F /* Bolts.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		819573ED1C2B8ECB00BFCA39 /* BFCancellationToken.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C60AEBD1ACF08F300747DD7 /* BFCancellationToken.h */; settings = {ATTRIBUTES = (Public, ); }; };
-		81CF830A1D0B559800633946 /* BFAppLink_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 81CF83061D0B559700633946 /* BFAppLink_Internal.h */; };
-		81CF830B1D0B559800633946 /* BFAppLink_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 81CF83061D0B559700633946 /* BFAppLink_Internal.h */; };
-		81CF830C1D0B559800633946 /* BFAppLinkReturnToRefererView_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 81CF83071D0B559700633946 /* BFAppLinkReturnToRefererView_Internal.h */; };
-		81CF830D1D0B559800633946 /* BFAppLinkReturnToRefererView_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 81CF83071D0B559700633946 /* BFAppLinkReturnToRefererView_Internal.h */; };
-		81CF830E1D0B559800633946 /* BFMeasurementEvent_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 81CF83081D0B559700633946 /* BFMeasurementEvent_Internal.h */; };
-		81CF830F1D0B559800633946 /* BFMeasurementEvent_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 81CF83081D0B559700633946 /* BFMeasurementEvent_Internal.h */; };
-		81CF83101D0B559800633946 /* BFURL_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 81CF83091D0B559700633946 /* BFURL_Internal.h */; };
-		81CF83111D0B559800633946 /* BFURL_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 81CF83091D0B559700633946 /* BFURL_Internal.h */; };
 		81D0EE7D19AFA8260000AE75 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 81D0EE7C19AFA8260000AE75 /* UIKit.framework */; };
-		81D0EE8319AFAA0E0000AE75 /* Bolts.h in Headers */ = {isa = PBXBuildFile; fileRef = 8103FA5419900A84000BAE3F /* Bolts.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		81D0EE8519AFAA190000AE75 /* BFTask.h in Headers */ = {isa = PBXBuildFile; fileRef = 8103FA5019900A84000BAE3F /* BFTask.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		81D0EE8819AFAA240000AE75 /* BFExecutor.h in Headers */ = {isa = PBXBuildFile; fileRef = 8103FA4E19900A84000BAE3F /* BFExecutor.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		81D0EE8A19AFAA2C0000AE75 /* BFTaskCompletionSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 8103FA5219900A84000BAE3F /* BFTaskCompletionSource.h */; settings = {ATTRIBUTES = (Public, ); }; };
@@ -119,7 +102,6 @@
 		81DC1A631B7A7F4000F491DC /* ExecutorTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 81DC1A611B7A7F4000F491DC /* ExecutorTests.m */; };
 		81E94D541C2B8BF200A6291E /* BFTaskCompletionSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 8103FA5319900A84000BAE3F /* BFTaskCompletionSource.m */; };
 		81E94D551C2B8BF200A6291E /* BFTask.m in Sources */ = {isa = PBXBuildFile; fileRef = 8103FA5119900A84000BAE3F /* BFTask.m */; };
-		81E94D561C2B8BF200A6291E /* Bolts.m in Sources */ = {isa = PBXBuildFile; fileRef = 8103FA5519900A84000BAE3F /* Bolts.m */; };
 		81E94D571C2B8BF200A6291E /* BFCancellationTokenRegistration.m in Sources */ = {isa = PBXBuildFile; fileRef = 7CA39C911ADE715400DD78CC /* BFCancellationTokenRegistration.m */; };
 		81E94D581C2B8BF200A6291E /* BFCancellationTokenSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 7C60AEC21ACF093D00747DD7 /* BFCancellationTokenSource.m */; };
 		81E94D591C2B8BF200A6291E /* BFExecutor.m in Sources */ = {isa = PBXBuildFile; fileRef = 8103FA4F19900A84000BAE3F /* BFExecutor.m */; };
@@ -130,11 +112,9 @@
 		81E94D601C2B8BF200A6291E /* BFCancellationTokenSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C60AEC11ACF093D00747DD7 /* BFCancellationTokenSource.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		81E94D611C2B8BF200A6291E /* BFExecutor.h in Headers */ = {isa = PBXBuildFile; fileRef = 8103FA4E19900A84000BAE3F /* BFExecutor.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		81E94D631C2B8BF200A6291E /* BFTaskCompletionSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 8103FA5219900A84000BAE3F /* BFTaskCompletionSource.h */; settings = {ATTRIBUTES = (Public, ); }; };
-		81E94D651C2B8BF200A6291E /* Bolts.h in Headers */ = {isa = PBXBuildFile; fileRef = 8103FA5419900A84000BAE3F /* Bolts.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		81E94D661C2B8BF200A6291E /* BFCancellationToken.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C60AEBD1ACF08F300747DD7 /* BFCancellationToken.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		81ED94131BE147CF00795F05 /* BFTaskCompletionSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 8103FA5319900A84000BAE3F /* BFTaskCompletionSource.m */; };
 		81ED94141BE147CF00795F05 /* BFTask.m in Sources */ = {isa = PBXBuildFile; fileRef = 8103FA5119900A84000BAE3F /* BFTask.m */; };
-		81ED94151BE147CF00795F05 /* Bolts.m in Sources */ = {isa = PBXBuildFile; fileRef = 8103FA5519900A84000BAE3F /* Bolts.m */; };
 		81ED94161BE147CF00795F05 /* BFCancellationTokenRegistration.m in Sources */ = {isa = PBXBuildFile; fileRef = 7CA39C911ADE715400DD78CC /* BFCancellationTokenRegistration.m */; };
 		81ED94171BE147CF00795F05 /* BFCancellationTokenSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 7C60AEC21ACF093D00747DD7 /* BFCancellationTokenSource.m */; };
 		81ED94181BE147CF00795F05 /* BFExecutor.m in Sources */ = {isa = PBXBuildFile; fileRef = 8103FA4F19900A84000BAE3F /* BFExecutor.m */; };
@@ -145,7 +125,6 @@
 		81ED941F1BE147CF00795F05 /* BFCancellationTokenSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C60AEC11ACF093D00747DD7 /* BFCancellationTokenSource.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		81ED94201BE147CF00795F05 /* BFExecutor.h in Headers */ = {isa = PBXBuildFile; fileRef = 8103FA4E19900A84000BAE3F /* BFExecutor.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		81ED94221BE147CF00795F05 /* BFTaskCompletionSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 8103FA5219900A84000BAE3F /* BFTaskCompletionSource.h */; settings = {ATTRIBUTES = (Public, ); }; };
-		81ED94241BE147CF00795F05 /* Bolts.h in Headers */ = {isa = PBXBuildFile; fileRef = 8103FA5419900A84000BAE3F /* Bolts.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		81ED94251BE147CF00795F05 /* BFCancellationToken.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C60AEBD1ACF08F300747DD7 /* BFCancellationToken.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		81ED942C1BE1481900795F05 /* BFAppLink.h in Headers */ = {isa = PBXBuildFile; fileRef = 8103FA5819900A84000BAE3F /* BFAppLink.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		81ED942D1BE1481900795F05 /* BFAppLink.m in Sources */ = {isa = PBXBuildFile; fileRef = 8103FA5919900A84000BAE3F /* BFAppLink.m */; };
@@ -164,13 +143,39 @@
 		81ED943C1BE1481900795F05 /* BFMeasurementEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = B242FAB919A567660097ECAE /* BFMeasurementEvent.m */; };
 		81ED943E1BE1481900795F05 /* BFURL.h in Headers */ = {isa = PBXBuildFile; fileRef = 8103FA6419900A84000BAE3F /* BFURL.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		81ED943F1BE1481900795F05 /* BFURL.m in Sources */ = {isa = PBXBuildFile; fileRef = 8103FA6519900A84000BAE3F /* BFURL.m */; };
-		85D5138A18E4E45800D19D87 /* AppLinkReturnToRefererViewTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 85D5138918E4E45800D19D87 /* AppLinkReturnToRefererViewTests.m */; };
 		8E8C8EFB17F23E5F00E3F1C7 /* TaskTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 8E9C3D1C17DE9F6500427E62 /* TaskTests.m */; };
 		8E8C8F2917F241FF00E3F1C7 /* TaskTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 8E9C3D1C17DE9F6500427E62 /* TaskTests.m */; };
 		8EDDA63017E17DDC00655F8A /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8E9C3CEC17DE9DE000427E62 /* Foundation.framework */; };
+		BCBD72B42652C70200F6BFFD /* Bolts.h in Headers */ = {isa = PBXBuildFile; fileRef = BCBD72B32652C70200F6BFFD /* Bolts.h */; };
+		BCBD72B52652C70200F6BFFD /* Bolts.h in Headers */ = {isa = PBXBuildFile; fileRef = BCBD72B32652C70200F6BFFD /* Bolts.h */; };
+		BCBD72B62652C70200F6BFFD /* Bolts.h in Headers */ = {isa = PBXBuildFile; fileRef = BCBD72B32652C70200F6BFFD /* Bolts.h */; };
+		BCBD72B72652C70200F6BFFD /* Bolts.h in Headers */ = {isa = PBXBuildFile; fileRef = BCBD72B32652C70200F6BFFD /* Bolts.h */; };
+		BCBD72B82652C70200F6BFFD /* Bolts.h in Headers */ = {isa = PBXBuildFile; fileRef = BCBD72B32652C70200F6BFFD /* Bolts.h */; };
+		BCBD72B92652C70200F6BFFD /* Bolts.h in Headers */ = {isa = PBXBuildFile; fileRef = BCBD72B32652C70200F6BFFD /* Bolts.h */; };
+		BCBD72BA2652C70200F6BFFD /* Bolts.h in Headers */ = {isa = PBXBuildFile; fileRef = BCBD72B32652C70200F6BFFD /* Bolts.h */; };
+		BCBD72BC2652C70C00F6BFFD /* Bolts.m in Sources */ = {isa = PBXBuildFile; fileRef = BCBD72BB2652C70C00F6BFFD /* Bolts.m */; };
+		BCBD72BD2652C70C00F6BFFD /* Bolts.m in Sources */ = {isa = PBXBuildFile; fileRef = BCBD72BB2652C70C00F6BFFD /* Bolts.m */; };
+		BCBD72BE2652C70C00F6BFFD /* Bolts.m in Sources */ = {isa = PBXBuildFile; fileRef = BCBD72BB2652C70C00F6BFFD /* Bolts.m */; };
+		BCBD72BF2652C70C00F6BFFD /* Bolts.m in Sources */ = {isa = PBXBuildFile; fileRef = BCBD72BB2652C70C00F6BFFD /* Bolts.m */; };
+		BCBD72C02652C70C00F6BFFD /* Bolts.m in Sources */ = {isa = PBXBuildFile; fileRef = BCBD72BB2652C70C00F6BFFD /* Bolts.m */; };
+		BCBD72C12652C70C00F6BFFD /* Bolts.m in Sources */ = {isa = PBXBuildFile; fileRef = BCBD72BB2652C70C00F6BFFD /* Bolts.m */; };
+		BCBD72C22652C70C00F6BFFD /* Bolts.m in Sources */ = {isa = PBXBuildFile; fileRef = BCBD72BB2652C70C00F6BFFD /* Bolts.m */; };
+		BCBD72C82652E50D00F6BFFD /* BFURL_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = BCBD72C42652E50D00F6BFFD /* BFURL_Internal.h */; };
+		BCBD72C92652E50D00F6BFFD /* BFAppLink_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = BCBD72C52652E50D00F6BFFD /* BFAppLink_Internal.h */; };
+		BCBD72CA2652E50D00F6BFFD /* BFAppLinkReturnToRefererView_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = BCBD72C62652E50D00F6BFFD /* BFAppLinkReturnToRefererView_Internal.h */; };
+		BCBD72CB2652E50D00F6BFFD /* BFMeasurementEvent_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = BCBD72C72652E50D00F6BFFD /* BFMeasurementEvent_Internal.h */; };
+		BCBD72CC2652E57B00F6BFFD /* BFURL_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = BCBD72C42652E50D00F6BFFD /* BFURL_Internal.h */; };
+		BCBD72CD2652E57B00F6BFFD /* BFAppLinkReturnToRefererView_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = BCBD72C62652E50D00F6BFFD /* BFAppLinkReturnToRefererView_Internal.h */; };
+		BCBD72CE2652E57B00F6BFFD /* BFMeasurementEvent_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = BCBD72C72652E50D00F6BFFD /* BFMeasurementEvent_Internal.h */; };
+		BCBD72CF2652E57B00F6BFFD /* BFAppLink_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = BCBD72C52652E50D00F6BFFD /* BFAppLink_Internal.h */; };
+		BCDDD7C526557CEA00851ED0 /* AppLinkTests.m in Sources */ = {isa = PBXBuildFile; fileRef = BCDDD7C326557CEA00851ED0 /* AppLinkTests.m */; };
+		BCDDD7C626557CEA00851ED0 /* AppLinkTests.m in Sources */ = {isa = PBXBuildFile; fileRef = BCDDD7C326557CEA00851ED0 /* AppLinkTests.m */; };
+		BCDDD7C726557CEA00851ED0 /* AppLinkTests.m in Sources */ = {isa = PBXBuildFile; fileRef = BCDDD7C326557CEA00851ED0 /* AppLinkTests.m */; };
+		BCDDD7C826557CEA00851ED0 /* AppLinkReturnToRefererViewTests.m in Sources */ = {isa = PBXBuildFile; fileRef = BCDDD7C426557CEA00851ED0 /* AppLinkReturnToRefererViewTests.m */; };
+		BCDDD7C926557CEA00851ED0 /* AppLinkReturnToRefererViewTests.m in Sources */ = {isa = PBXBuildFile; fileRef = BCDDD7C426557CEA00851ED0 /* AppLinkReturnToRefererViewTests.m */; };
+		BCDDD7CA26557CEA00851ED0 /* AppLinkReturnToRefererViewTests.m in Sources */ = {isa = PBXBuildFile; fileRef = BCDDD7C426557CEA00851ED0 /* AppLinkReturnToRefererViewTests.m */; };
 		F5AFC9EC1BA752750076E927 /* BFTaskCompletionSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 8103FA5319900A84000BAE3F /* BFTaskCompletionSource.m */; };
 		F5AFC9ED1BA752750076E927 /* BFTask.m in Sources */ = {isa = PBXBuildFile; fileRef = 8103FA5119900A84000BAE3F /* BFTask.m */; };
-		F5AFC9EE1BA752750076E927 /* Bolts.m in Sources */ = {isa = PBXBuildFile; fileRef = 8103FA5519900A84000BAE3F /* Bolts.m */; };
 		F5AFC9EF1BA752750076E927 /* BFCancellationTokenRegistration.m in Sources */ = {isa = PBXBuildFile; fileRef = 7CA39C911ADE715400DD78CC /* BFCancellationTokenRegistration.m */; };
 		F5AFC9F01BA752750076E927 /* BFCancellationTokenSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 7C60AEC21ACF093D00747DD7 /* BFCancellationTokenSource.m */; };
 		F5AFC9F11BA752750076E927 /* BFExecutor.m in Sources */ = {isa = PBXBuildFile; fileRef = 8103FA4F19900A84000BAE3F /* BFExecutor.m */; };
@@ -181,7 +186,6 @@
 		F5AFC9F81BA752750076E927 /* BFCancellationTokenSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C60AEC11ACF093D00747DD7 /* BFCancellationTokenSource.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		F5AFC9F91BA752750076E927 /* BFExecutor.h in Headers */ = {isa = PBXBuildFile; fileRef = 8103FA4E19900A84000BAE3F /* BFExecutor.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		F5AFC9FB1BA752750076E927 /* BFTaskCompletionSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 8103FA5219900A84000BAE3F /* BFTaskCompletionSource.h */; settings = {ATTRIBUTES = (Public, ); }; };
-		F5AFC9FD1BA752750076E927 /* Bolts.h in Headers */ = {isa = PBXBuildFile; fileRef = 8103FA5419900A84000BAE3F /* Bolts.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		F5AFC9FE1BA752750076E927 /* BFCancellationToken.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C60AEBD1ACF08F300747DD7 /* BFCancellationToken.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		F5AFCA081BA752770076E927 /* ExecutorTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 81DC1A611B7A7F4000F491DC /* ExecutorTests.m */; };
 		F5AFCA0A1BA752770076E927 /* TaskTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 8E9C3D1C17DE9F6500427E62 /* TaskTests.m */; };
@@ -230,7 +234,6 @@
 		1EC3016F18CDAA8400D06D07 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
 		1EC3017018CDAA8400D06D07 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
 		1EC3017218CDAA8400D06D07 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = "<group>"; };
-		1EC3019018CDABCE00D06D07 /* AppLinkTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppLinkTests.m; sourceTree = "<group>"; };
 		46A4AE4324094C690022BB98 /* WebKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = System/Library/Frameworks/WebKit.framework; sourceTree = SDKROOT; };
 		7C60AEBD1ACF08F300747DD7 /* BFCancellationToken.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BFCancellationToken.h; sourceTree = "<group>"; };
 		7C60AEBE1ACF08F300747DD7 /* BFCancellationToken.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BFCancellationToken.m; sourceTree = "<group>"; };
@@ -245,8 +248,6 @@
 		8103FA5119900A84000BAE3F /* BFTask.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BFTask.m; sourceTree = "<group>"; };
 		8103FA5219900A84000BAE3F /* BFTaskCompletionSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BFTaskCompletionSource.h; sourceTree = "<group>"; };
 		8103FA5319900A84000BAE3F /* BFTaskCompletionSource.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BFTaskCompletionSource.m; sourceTree = "<group>"; };
-		8103FA5419900A84000BAE3F /* Bolts.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Bolts.h; sourceTree = "<group>"; };
-		8103FA5519900A84000BAE3F /* Bolts.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Bolts.m; sourceTree = "<group>"; };
 		8103FA5819900A84000BAE3F /* BFAppLink.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BFAppLink.h; sourceTree = "<group>"; };
 		8103FA5919900A84000BAE3F /* BFAppLink.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BFAppLink.m; sourceTree = "<group>"; };
 		8103FA5A19900A84000BAE3F /* BFAppLinkNavigation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BFAppLinkNavigation.h; sourceTree = "<group>"; };
@@ -262,15 +263,11 @@
 		8103FA6519900A84000BAE3F /* BFURL.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BFURL.m; sourceTree = "<group>"; };
 		8103FA6619900A84000BAE3F /* BFWebViewAppLinkResolver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BFWebViewAppLinkResolver.h; sourceTree = "<group>"; };
 		8103FA6719900A84000BAE3F /* BFWebViewAppLinkResolver.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BFWebViewAppLinkResolver.m; sourceTree = "<group>"; };
-		814916E11AD5D46600EE7C63 /* iOS.modulemap */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = "sourcecode.module-map"; name = iOS.modulemap; path = Resources/iOS.modulemap; sourceTree = "<group>"; };
+		814916E11AD5D46600EE7C63 /* iOS.modulemap */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = "sourcecode.module-map"; path = iOS.modulemap; sourceTree = "<group>"; };
 		8160B82B1DE6277200C6E285 /* BFGeneric.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BFGeneric.h; sourceTree = "<group>"; };
 		8178F99C1BB0F87700AD289D /* Bolts.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Bolts.framework; sourceTree = BUILT_PRODUCTS_DIR; };
 		819573F11C2B8ECB00BFCA39 /* Bolts.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Bolts.framework; sourceTree = BUILT_PRODUCTS_DIR; };
 		81AB8BB11D36D7BD00066F63 /* Version.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Version.xcconfig; sourceTree = "<group>"; };
-		81CF83061D0B559700633946 /* BFAppLink_Internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BFAppLink_Internal.h; sourceTree = "<group>"; };
-		81CF83071D0B559700633946 /* BFAppLinkReturnToRefererView_Internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BFAppLinkReturnToRefererView_Internal.h; sourceTree = "<group>"; };
-		81CF83081D0B559700633946 /* BFMeasurementEvent_Internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BFMeasurementEvent_Internal.h; sourceTree = "<group>"; };
-		81CF83091D0B559700633946 /* BFURL_Internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BFURL_Internal.h; sourceTree = "<group>"; };
 		81D0EE7C19AFA8260000AE75 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.1.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; };
 		81D646E31D2CA0E000690609 /* Bolts-iOS-Dynamic.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Bolts-iOS-Dynamic.xcconfig"; sourceTree = "<group>"; };
 		81D646E41D2CA0E000690609 /* Bolts-iOS.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Bolts-iOS.xcconfig"; sourceTree = "<group>"; };
@@ -294,13 +291,11 @@
 		81D646FB1D2CA0E000690609 /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = "<group>"; };
 		81D646FC1D2CA0E000690609 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = "<group>"; };
 		81D6472A1D2CA2C600690609 /* macOS.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = macOS.xcconfig; path = Vendor/xctoolchain/Configurations/Platform/macOS.xcconfig; sourceTree = SOURCE_ROOT; };
-		81D647431D2CA52300690609 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plist; path = Resources/Info.plist; sourceTree = "<group>"; };
+		81D647431D2CA52300690609 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
 		81DC1A611B7A7F4000F491DC /* ExecutorTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ExecutorTests.m; sourceTree = "<group>"; };
 		81E94D6A1C2B8BF200A6291E /* Bolts.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Bolts.framework; sourceTree = BUILT_PRODUCTS_DIR; };
 		81ED94291BE147CF00795F05 /* Bolts.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Bolts.framework; sourceTree = BUILT_PRODUCTS_DIR; };
 		81ED946E1BE14B5200795F05 /* Bolts.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Bolts.framework; sourceTree = BUILT_PRODUCTS_DIR; };
-		8550FD2E18EE1B7A00976B4B /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = "<group>"; };
-		85D5138918E4E45800D19D87 /* AppLinkReturnToRefererViewTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppLinkReturnToRefererViewTests.m; sourceTree = "<group>"; };
 		8E8C8ED217F23C3B00E3F1C7 /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; };
 		8E8C8ED917F23C3B00E3F1C7 /* BoltsTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "BoltsTests-Info.plist"; sourceTree = "<group>"; };
 		8E8C8EDB17F23C3B00E3F1C7 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
@@ -312,6 +307,14 @@
 		8E9C3D1C17DE9F6500427E62 /* TaskTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TaskTests.m; sourceTree = "<group>"; };
 		B242FAB819A567660097ECAE /* BFMeasurementEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BFMeasurementEvent.h; sourceTree = "<group>"; };
 		B242FAB919A567660097ECAE /* BFMeasurementEvent.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BFMeasurementEvent.m; sourceTree = "<group>"; };
+		BCBD72B32652C70200F6BFFD /* Bolts.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Bolts.h; sourceTree = "<group>"; };
+		BCBD72BB2652C70C00F6BFFD /* Bolts.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Bolts.m; sourceTree = "<group>"; };
+		BCBD72C42652E50D00F6BFFD /* BFURL_Internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BFURL_Internal.h; sourceTree = "<group>"; };
+		BCBD72C52652E50D00F6BFFD /* BFAppLink_Internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BFAppLink_Internal.h; sourceTree = "<group>"; };
+		BCBD72C62652E50D00F6BFFD /* BFAppLinkReturnToRefererView_Internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BFAppLinkReturnToRefererView_Internal.h; sourceTree = "<group>"; };
+		BCBD72C72652E50D00F6BFFD /* BFMeasurementEvent_Internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BFMeasurementEvent_Internal.h; sourceTree = "<group>"; };
+		BCDDD7C326557CEA00851ED0 /* AppLinkTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppLinkTests.m; sourceTree = "<group>"; };
+		BCDDD7C426557CEA00851ED0 /* AppLinkReturnToRefererViewTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppLinkReturnToRefererViewTests.m; sourceTree = "<group>"; };
 		F5AFCA021BA752750076E927 /* Bolts.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Bolts.framework; sourceTree = BUILT_PRODUCTS_DIR; };
 		F5AFCA131BA752770076E927 /* BoltsTests-tvOS.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "BoltsTests-tvOS.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
 /* End PBXFileReference section */
@@ -435,32 +438,9 @@
 			name = "Supporting Files";
 			sourceTree = "<group>";
 		};
-		8103FA4D19900A84000BAE3F /* Common */ = {
+		8103FA5719900A84000BAE3F /* Bolts-iOS */ = {
 			isa = PBXGroup;
 			children = (
-				8103FA5419900A84000BAE3F /* Bolts.h */,
-				8103FA5519900A84000BAE3F /* Bolts.m */,
-				8160B82B1DE6277200C6E285 /* BFGeneric.h */,
-				8103FA5019900A84000BAE3F /* BFTask.h */,
-				8103FA5119900A84000BAE3F /* BFTask.m */,
-				8103FA5219900A84000BAE3F /* BFTaskCompletionSource.h */,
-				8103FA5319900A84000BAE3F /* BFTaskCompletionSource.m */,
-				8103FA4E19900A84000BAE3F /* BFExecutor.h */,
-				8103FA4F19900A84000BAE3F /* BFExecutor.m */,
-				7C60AEBD1ACF08F300747DD7 /* BFCancellationToken.h */,
-				7C60AEBE1ACF08F300747DD7 /* BFCancellationToken.m */,
-				7CA39C901ADE715400DD78CC /* BFCancellationTokenRegistration.h */,
-				7CA39C911ADE715400DD78CC /* BFCancellationTokenRegistration.m */,
-				7C60AEC11ACF093D00747DD7 /* BFCancellationTokenSource.h */,
-				7C60AEC21ACF093D00747DD7 /* BFCancellationTokenSource.m */,
-			);
-			path = Common;
-			sourceTree = "<group>";
-		};
-		8103FA5719900A84000BAE3F /* iOS */ = {
-			isa = PBXGroup;
-			children = (
-				81CF83051D0B559700633946 /* Internal */,
 				8103FA5819900A84000BAE3F /* BFAppLink.h */,
 				8103FA5919900A84000BAE3F /* BFAppLink.m */,
 				8103FA5A19900A84000BAE3F /* BFAppLinkNavigation.h */,
@@ -478,19 +458,12 @@
 				B242FAB919A567660097ECAE /* BFMeasurementEvent.m */,
 				8103FA6419900A84000BAE3F /* BFURL.h */,
 				8103FA6519900A84000BAE3F /* BFURL.m */,
+				BCBD72C52652E50D00F6BFFD /* BFAppLink_Internal.h */,
+				BCBD72C62652E50D00F6BFFD /* BFAppLinkReturnToRefererView_Internal.h */,
+				BCBD72C72652E50D00F6BFFD /* BFMeasurementEvent_Internal.h */,
+				BCBD72C42652E50D00F6BFFD /* BFURL_Internal.h */,
 			);
-			path = iOS;
-			sourceTree = "<group>";
-		};
-		81CF83051D0B559700633946 /* Internal */ = {
-			isa = PBXGroup;
-			children = (
-				81CF83061D0B559700633946 /* BFAppLink_Internal.h */,
-				81CF83071D0B559700633946 /* BFAppLinkReturnToRefererView_Internal.h */,
-				81CF83081D0B559700633946 /* BFMeasurementEvent_Internal.h */,
-				81CF83091D0B559700633946 /* BFURL_Internal.h */,
-			);
-			path = Internal;
+			path = "Bolts-iOS";
 			sourceTree = "<group>";
 		};
 		81D646E21D2CA0E000690609 /* Configurations */ = {
@@ -558,8 +531,8 @@
 		8E8C8ED717F23C3B00E3F1C7 /* BoltsTests */ = {
 			isa = PBXGroup;
 			children = (
-				85D5138918E4E45800D19D87 /* AppLinkReturnToRefererViewTests.m */,
-				1EC3019018CDABCE00D06D07 /* AppLinkTests.m */,
+				BCDDD7C426557CEA00851ED0 /* AppLinkReturnToRefererViewTests.m */,
+				BCDDD7C326557CEA00851ED0 /* AppLinkTests.m */,
 				7C60AEC51ACF19F900747DD7 /* CancellationTests.m */,
 				81DC1A611B7A7F4000F491DC /* ExecutorTests.m */,
 				8E9C3D1C17DE9F6500427E62 /* TaskTests.m */,
@@ -583,7 +556,10 @@
 				81D646E21D2CA0E000690609 /* Configurations */,
 				8E9C3CEE17DE9DE000427E62 /* Bolts */,
 				8E8C8ED717F23C3B00E3F1C7 /* BoltsTests */,
+				8103FA5719900A84000BAE3F /* Bolts-iOS */,
+				BCBD72C32652DCCC00F6BFFD /* Bolts-iOS-Tests */,
 				1EC3016618CDAA8400D06D07 /* BoltsTestUI */,
+				8E9C3CEF17DE9DE000427E62 /* Supporting Files */,
 				8E9C3CEB17DE9DE000427E62 /* Frameworks */,
 				8E9C3CEA17DE9DE000427E62 /* Products */,
 			);
@@ -626,10 +602,23 @@
 		8E9C3CEE17DE9DE000427E62 /* Bolts */ = {
 			isa = PBXGroup;
 			children = (
-				8103FA4D19900A84000BAE3F /* Common */,
-				8103FA5719900A84000BAE3F /* iOS */,
-				8E9C3CEF17DE9DE000427E62 /* Supporting Files */,
-				8550FD2D18EE1B7A00976B4B /* Localizable.strings */,
+				BCBD72B32652C70200F6BFFD /* Bolts.h */,
+				BCBD72BB2652C70C00F6BFFD /* Bolts.m */,
+				8160B82B1DE6277200C6E285 /* BFGeneric.h */,
+				8103FA5019900A84000BAE3F /* BFTask.h */,
+				8103FA5119900A84000BAE3F /* BFTask.m */,
+				8103FA5219900A84000BAE3F /* BFTaskCompletionSource.h */,
+				8103FA5319900A84000BAE3F /* BFTaskCompletionSource.m */,
+				8103FA4E19900A84000BAE3F /* BFExecutor.h */,
+				8103FA4F19900A84000BAE3F /* BFExecutor.m */,
+				7C60AEBD1ACF08F300747DD7 /* BFCancellationToken.h */,
+				7C60AEBE1ACF08F300747DD7 /* BFCancellationToken.m */,
+				7CA39C901ADE715400DD78CC /* BFCancellationTokenRegistration.h */,
+				7CA39C911ADE715400DD78CC /* BFCancellationTokenRegistration.m */,
+				7C60AEC11ACF093D00747DD7 /* BFCancellationTokenSource.h */,
+				7C60AEC21ACF093D00747DD7 /* BFCancellationTokenSource.m */,
+				814916E11AD5D46600EE7C63 /* iOS.modulemap */,
+				81D647431D2CA52300690609 /* Info.plist */,
 			);
 			path = Bolts;
 			sourceTree = "<group>";
@@ -637,10 +626,16 @@
 		8E9C3CEF17DE9DE000427E62 /* Supporting Files */ = {
 			isa = PBXGroup;
 			children = (
-				814916E11AD5D46600EE7C63 /* iOS.modulemap */,
-				81D647431D2CA52300690609 /* Info.plist */,
 			);
 			name = "Supporting Files";
+			path = Bolts;
+			sourceTree = "<group>";
+		};
+		BCBD72C32652DCCC00F6BFFD /* Bolts-iOS-Tests */ = {
+			isa = PBXGroup;
+			children = (
+			);
+			path = "Bolts-iOS-Tests";
 			sourceTree = "<group>";
 		};
 /* End PBXGroup section */
@@ -650,25 +645,25 @@
 			isa = PBXHeadersBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				BCBD72CF2652E57B00F6BFFD /* BFAppLink_Internal.h in Headers */,
 				1D5D7DBA1BE3CE8200FD67C7 /* BFWebViewAppLinkResolver.h in Headers */,
 				8160B82D1DE6277200C6E285 /* BFGeneric.h in Headers */,
-				81CF830D1D0B559800633946 /* BFAppLinkReturnToRefererView_Internal.h in Headers */,
-				81CF83111D0B559800633946 /* BFURL_Internal.h in Headers */,
 				1D5D7DBB1BE3CE8200FD67C7 /* BFCancellationTokenRegistration.h in Headers */,
+				BCBD72CE2652E57B00F6BFFD /* BFMeasurementEvent_Internal.h in Headers */,
 				1D5D7DBC1BE3CE8200FD67C7 /* BFTask.h in Headers */,
 				1D5D7DBD1BE3CE8200FD67C7 /* BFAppLinkNavigation.h in Headers */,
-				81CF830B1D0B559800633946 /* BFAppLink_Internal.h in Headers */,
 				1D5D7DBE1BE3CE8200FD67C7 /* BFAppLinkReturnToRefererView.h in Headers */,
 				1D5D7DBF1BE3CE8200FD67C7 /* BFCancellationTokenSource.h in Headers */,
 				1D5D7DC01BE3CE8200FD67C7 /* BFExecutor.h in Headers */,
 				1D5D7DC11BE3CE8200FD67C7 /* BFAppLinkTarget.h in Headers */,
 				1D5D7DC41BE3CE8200FD67C7 /* BFAppLinkResolving.h in Headers */,
 				1D5D7DC61BE3CE8200FD67C7 /* BFURL.h in Headers */,
-				81CF830F1D0B559800633946 /* BFMeasurementEvent_Internal.h in Headers */,
+				BCBD72CD2652E57B00F6BFFD /* BFAppLinkReturnToRefererView_Internal.h in Headers */,
+				BCBD72B52652C70200F6BFFD /* Bolts.h in Headers */,
 				1D5D7DC71BE3CE8200FD67C7 /* BFTaskCompletionSource.h in Headers */,
 				1D5D7DCA1BE3CE8200FD67C7 /* BFMeasurementEvent.h in Headers */,
-				1D5D7DCC1BE3CE8200FD67C7 /* Bolts.h in Headers */,
 				1D5D7DCD1BE3CE8200FD67C7 /* BFCancellationToken.h in Headers */,
+				BCBD72CC2652E57B00F6BFFD /* BFURL_Internal.h in Headers */,
 				1D5D7DCE1BE3CE8200FD67C7 /* BFAppLink.h in Headers */,
 				1D5D7DCF1BE3CE8200FD67C7 /* BFAppLinkReturnToRefererController.h in Headers */,
 			);
@@ -679,11 +674,11 @@
 			buildActionMask = 2147483647;
 			files = (
 				8178F9901BB0F87700AD289D /* BFCancellationTokenRegistration.h in Headers */,
+				BCBD72B92652C70200F6BFFD /* Bolts.h in Headers */,
 				8178F9911BB0F87700AD289D /* BFTask.h in Headers */,
 				8178F9921BB0F87700AD289D /* BFCancellationTokenSource.h in Headers */,
 				8178F9931BB0F87700AD289D /* BFExecutor.h in Headers */,
 				8178F9951BB0F87700AD289D /* BFTaskCompletionSource.h in Headers */,
-				8178F9971BB0F87700AD289D /* Bolts.h in Headers */,
 				8160B8311DE6277200C6E285 /* BFGeneric.h in Headers */,
 				8178F9981BB0F87700AD289D /* BFCancellationToken.h in Headers */,
 			);
@@ -694,11 +689,11 @@
 			buildActionMask = 2147483647;
 			files = (
 				819573E51C2B8ECB00BFCA39 /* BFCancellationTokenRegistration.h in Headers */,
+				BCBD72BA2652C70200F6BFFD /* Bolts.h in Headers */,
 				819573E61C2B8ECB00BFCA39 /* BFTask.h in Headers */,
 				819573E71C2B8ECB00BFCA39 /* BFCancellationTokenSource.h in Headers */,
 				819573E81C2B8ECB00BFCA39 /* BFExecutor.h in Headers */,
 				819573EA1C2B8ECB00BFCA39 /* BFTaskCompletionSource.h in Headers */,
-				819573EC1C2B8ECB00BFCA39 /* Bolts.h in Headers */,
 				8160B8321DE6277200C6E285 /* BFGeneric.h in Headers */,
 				819573ED1C2B8ECB00BFCA39 /* BFCancellationToken.h in Headers */,
 			);
@@ -709,11 +704,11 @@
 			buildActionMask = 2147483647;
 			files = (
 				7CA39C931ADE715400DD78CC /* BFCancellationTokenRegistration.h in Headers */,
+				BCBD72B62652C70200F6BFFD /* Bolts.h in Headers */,
 				81D0EE8519AFAA190000AE75 /* BFTask.h in Headers */,
 				7C60AECA1ACF1A0B00747DD7 /* BFCancellationTokenSource.h in Headers */,
 				81D0EE8819AFAA240000AE75 /* BFExecutor.h in Headers */,
 				81D0EE8A19AFAA2C0000AE75 /* BFTaskCompletionSource.h in Headers */,
-				81D0EE8319AFAA0E0000AE75 /* Bolts.h in Headers */,
 				8160B82E1DE6277200C6E285 /* BFGeneric.h in Headers */,
 				7C60AEC81ACF1A0100747DD7 /* BFCancellationToken.h in Headers */,
 			);
@@ -724,11 +719,11 @@
 			buildActionMask = 2147483647;
 			files = (
 				81E94D5E1C2B8BF200A6291E /* BFCancellationTokenRegistration.h in Headers */,
+				BCBD72B82652C70200F6BFFD /* Bolts.h in Headers */,
 				81E94D5F1C2B8BF200A6291E /* BFTask.h in Headers */,
 				81E94D601C2B8BF200A6291E /* BFCancellationTokenSource.h in Headers */,
 				81E94D611C2B8BF200A6291E /* BFExecutor.h in Headers */,
 				81E94D631C2B8BF200A6291E /* BFTaskCompletionSource.h in Headers */,
-				81E94D651C2B8BF200A6291E /* Bolts.h in Headers */,
 				8160B8301DE6277200C6E285 /* BFGeneric.h in Headers */,
 				81E94D661C2B8BF200A6291E /* BFCancellationToken.h in Headers */,
 			);
@@ -740,22 +735,22 @@
 			files = (
 				81ED94311BE1481900795F05 /* BFWebViewAppLinkResolver.h in Headers */,
 				8160B82C1DE6277200C6E285 /* BFGeneric.h in Headers */,
-				81CF830C1D0B559800633946 /* BFAppLinkReturnToRefererView_Internal.h in Headers */,
-				81CF83101D0B559800633946 /* BFURL_Internal.h in Headers */,
 				81ED941D1BE147CF00795F05 /* BFCancellationTokenRegistration.h in Headers */,
 				81ED941E1BE147CF00795F05 /* BFTask.h in Headers */,
+				BCBD72C92652E50D00F6BFFD /* BFAppLink_Internal.h in Headers */,
 				81ED942E1BE1481900795F05 /* BFAppLinkNavigation.h in Headers */,
-				81CF830A1D0B559800633946 /* BFAppLink_Internal.h in Headers */,
+				BCBD72CA2652E50D00F6BFFD /* BFAppLinkReturnToRefererView_Internal.h in Headers */,
 				81ED94351BE1481900795F05 /* BFAppLinkReturnToRefererView.h in Headers */,
 				81ED941F1BE147CF00795F05 /* BFCancellationTokenSource.h in Headers */,
 				81ED94201BE147CF00795F05 /* BFExecutor.h in Headers */,
+				BCBD72CB2652E50D00F6BFFD /* BFMeasurementEvent_Internal.h in Headers */,
 				81ED94381BE1481900795F05 /* BFAppLinkTarget.h in Headers */,
 				81ED94301BE1481900795F05 /* BFAppLinkResolving.h in Headers */,
+				BCBD72C82652E50D00F6BFFD /* BFURL_Internal.h in Headers */,
 				81ED943E1BE1481900795F05 /* BFURL.h in Headers */,
-				81CF830E1D0B559800633946 /* BFMeasurementEvent_Internal.h in Headers */,
 				81ED94221BE147CF00795F05 /* BFTaskCompletionSource.h in Headers */,
+				BCBD72B42652C70200F6BFFD /* Bolts.h in Headers */,
 				81ED943B1BE1481900795F05 /* BFMeasurementEvent.h in Headers */,
-				81ED94241BE147CF00795F05 /* Bolts.h in Headers */,
 				81ED94251BE147CF00795F05 /* BFCancellationToken.h in Headers */,
 				81ED942C1BE1481900795F05 /* BFAppLink.h in Headers */,
 				81ED94331BE1481900795F05 /* BFAppLinkReturnToRefererController.h in Headers */,
@@ -767,11 +762,11 @@
 			buildActionMask = 2147483647;
 			files = (
 				F5AFC9F61BA752750076E927 /* BFCancellationTokenRegistration.h in Headers */,
+				BCBD72B72652C70200F6BFFD /* Bolts.h in Headers */,
 				F5AFC9F71BA752750076E927 /* BFTask.h in Headers */,
 				F5AFC9F81BA752750076E927 /* BFCancellationTokenSource.h in Headers */,
 				F5AFC9F91BA752750076E927 /* BFExecutor.h in Headers */,
 				F5AFC9FB1BA752750076E927 /* BFTaskCompletionSource.h in Headers */,
-				F5AFC9FD1BA752750076E927 /* Bolts.h in Headers */,
 				8160B82F1DE6277200C6E285 /* BFGeneric.h in Headers */,
 				F5AFC9FE1BA752750076E927 /* BFCancellationToken.h in Headers */,
 			);
@@ -1058,7 +1053,6 @@
 				1D5D7DAA1BE3CE8200FD67C7 /* BFAppLinkTarget.m in Sources */,
 				1D5D7DAB1BE3CE8200FD67C7 /* BFAppLinkReturnToRefererView.m in Sources */,
 				1D5D7DAC1BE3CE8200FD67C7 /* BFTask.m in Sources */,
-				1D5D7DAD1BE3CE8200FD67C7 /* Bolts.m in Sources */,
 				1D5D7DAE1BE3CE8200FD67C7 /* BFCancellationTokenRegistration.m in Sources */,
 				1D5D7DAF1BE3CE8200FD67C7 /* BFCancellationTokenSource.m in Sources */,
 				1D5D7DB01BE3CE8200FD67C7 /* BFMeasurementEvent.m in Sources */,
@@ -1066,6 +1060,7 @@
 				1D5D7DB21BE3CE8200FD67C7 /* BFAppLinkNavigation.m in Sources */,
 				1D5D7DB31BE3CE8200FD67C7 /* BFAppLinkReturnToRefererController.m in Sources */,
 				1D5D7DB41BE3CE8200FD67C7 /* BFAppLink.m in Sources */,
+				BCBD72BD2652C70C00F6BFFD /* Bolts.m in Sources */,
 				1D5D7DB51BE3CE8200FD67C7 /* BFExecutor.m in Sources */,
 				1D5D7DB61BE3CE8200FD67C7 /* BFCancellationToken.m in Sources */,
 			);
@@ -1086,7 +1081,7 @@
 			files = (
 				8178F9861BB0F87700AD289D /* BFTaskCompletionSource.m in Sources */,
 				8178F9871BB0F87700AD289D /* BFTask.m in Sources */,
-				8178F9881BB0F87700AD289D /* Bolts.m in Sources */,
+				BCBD72C12652C70C00F6BFFD /* Bolts.m in Sources */,
 				8178F9891BB0F87700AD289D /* BFCancellationTokenRegistration.m in Sources */,
 				8178F98A1BB0F87700AD289D /* BFCancellationTokenSource.m in Sources */,
 				8178F98B1BB0F87700AD289D /* BFExecutor.m in Sources */,
@@ -1100,7 +1095,7 @@
 			files = (
 				819573DB1C2B8ECB00BFCA39 /* BFTaskCompletionSource.m in Sources */,
 				819573DC1C2B8ECB00BFCA39 /* BFTask.m in Sources */,
-				819573DD1C2B8ECB00BFCA39 /* Bolts.m in Sources */,
+				BCBD72C22652C70C00F6BFFD /* Bolts.m in Sources */,
 				819573DE1C2B8ECB00BFCA39 /* BFCancellationTokenRegistration.m in Sources */,
 				819573DF1C2B8ECB00BFCA39 /* BFCancellationTokenSource.m in Sources */,
 				819573E01C2B8ECB00BFCA39 /* BFExecutor.m in Sources */,
@@ -1114,7 +1109,7 @@
 			files = (
 				81E94D541C2B8BF200A6291E /* BFTaskCompletionSource.m in Sources */,
 				81E94D551C2B8BF200A6291E /* BFTask.m in Sources */,
-				81E94D561C2B8BF200A6291E /* Bolts.m in Sources */,
+				BCBD72C02652C70C00F6BFFD /* Bolts.m in Sources */,
 				81E94D571C2B8BF200A6291E /* BFCancellationTokenRegistration.m in Sources */,
 				81E94D581C2B8BF200A6291E /* BFCancellationTokenSource.m in Sources */,
 				81E94D591C2B8BF200A6291E /* BFExecutor.m in Sources */,
@@ -1131,7 +1126,6 @@
 				81ED94391BE1481900795F05 /* BFAppLinkTarget.m in Sources */,
 				81ED94361BE1481900795F05 /* BFAppLinkReturnToRefererView.m in Sources */,
 				81ED94141BE147CF00795F05 /* BFTask.m in Sources */,
-				81ED94151BE147CF00795F05 /* Bolts.m in Sources */,
 				81ED94161BE147CF00795F05 /* BFCancellationTokenRegistration.m in Sources */,
 				81ED94171BE147CF00795F05 /* BFCancellationTokenSource.m in Sources */,
 				81ED943C1BE1481900795F05 /* BFMeasurementEvent.m in Sources */,
@@ -1139,6 +1133,7 @@
 				81ED942F1BE1481900795F05 /* BFAppLinkNavigation.m in Sources */,
 				81ED94341BE1481900795F05 /* BFAppLinkReturnToRefererController.m in Sources */,
 				81ED942D1BE1481900795F05 /* BFAppLink.m in Sources */,
+				BCBD72BC2652C70C00F6BFFD /* Bolts.m in Sources */,
 				81ED94181BE147CF00795F05 /* BFExecutor.m in Sources */,
 				81ED94191BE147CF00795F05 /* BFCancellationToken.m in Sources */,
 			);
@@ -1149,10 +1144,10 @@
 			buildActionMask = 2147483647;
 			files = (
 				81DC1A621B7A7F4000F491DC /* ExecutorTests.m in Sources */,
-				1EC3019118CDABCE00D06D07 /* AppLinkTests.m in Sources */,
 				7C60AEC61ACF19F900747DD7 /* CancellationTests.m in Sources */,
-				85D5138A18E4E45800D19D87 /* AppLinkReturnToRefererViewTests.m in Sources */,
 				8E8C8EFB17F23E5F00E3F1C7 /* TaskTests.m in Sources */,
+				BCDDD7C826557CEA00851ED0 /* AppLinkReturnToRefererViewTests.m in Sources */,
+				BCDDD7C526557CEA00851ED0 /* AppLinkTests.m in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -1163,6 +1158,8 @@
 				81DC1A631B7A7F4000F491DC /* ExecutorTests.m in Sources */,
 				8E8C8F2917F241FF00E3F1C7 /* TaskTests.m in Sources */,
 				7C60AEC71ACF19FD00747DD7 /* CancellationTests.m in Sources */,
+				BCDDD7C926557CEA00851ED0 /* AppLinkReturnToRefererViewTests.m in Sources */,
+				BCDDD7C626557CEA00851ED0 /* AppLinkTests.m in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -1172,7 +1169,7 @@
 			files = (
 				8103FA6D19900A84000BAE3F /* BFTaskCompletionSource.m in Sources */,
 				8103FA6B19900A84000BAE3F /* BFTask.m in Sources */,
-				8103FA6F19900A84000BAE3F /* Bolts.m in Sources */,
+				BCBD72BE2652C70C00F6BFFD /* Bolts.m in Sources */,
 				7CA39C951ADE715400DD78CC /* BFCancellationTokenRegistration.m in Sources */,
 				7C60AECB1ACF1A0D00747DD7 /* BFCancellationTokenSource.m in Sources */,
 				8103FA6919900A84000BAE3F /* BFExecutor.m in Sources */,
@@ -1186,7 +1183,7 @@
 			files = (
 				F5AFC9EC1BA752750076E927 /* BFTaskCompletionSource.m in Sources */,
 				F5AFC9ED1BA752750076E927 /* BFTask.m in Sources */,
-				F5AFC9EE1BA752750076E927 /* Bolts.m in Sources */,
+				BCBD72BF2652C70C00F6BFFD /* Bolts.m in Sources */,
 				F5AFC9EF1BA752750076E927 /* BFCancellationTokenRegistration.m in Sources */,
 				F5AFC9F01BA752750076E927 /* BFCancellationTokenSource.m in Sources */,
 				F5AFC9F11BA752750076E927 /* BFExecutor.m in Sources */,
@@ -1201,6 +1198,8 @@
 				F5AFCA081BA752770076E927 /* ExecutorTests.m in Sources */,
 				F5AFCA0A1BA752770076E927 /* TaskTests.m in Sources */,
 				F5AFCA0B1BA752770076E927 /* CancellationTests.m in Sources */,
+				BCDDD7CA26557CEA00851ED0 /* AppLinkReturnToRefererViewTests.m in Sources */,
+				BCDDD7C726557CEA00851ED0 /* AppLinkTests.m in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -1238,14 +1237,6 @@
 			name = InfoPlist.strings;
 			sourceTree = "<group>";
 		};
-		8550FD2D18EE1B7A00976B4B /* Localizable.strings */ = {
-			isa = PBXVariantGroup;
-			children = (
-				8550FD2E18EE1B7A00976B4B /* en */,
-			);
-			name = Localizable.strings;
-			sourceTree = "<group>";
-		};
 		8E8C8EDA17F23C3B00E3F1C7 /* InfoPlist.strings */ = {
 			isa = PBXVariantGroup;
 			children = (
@@ -1261,6 +1252,7 @@
 			isa = XCBuildConfiguration;
 			baseConfigurationReference = 81D646E31D2CA0E000690609 /* Bolts-iOS-Dynamic.xcconfig */;
 			buildSettings = {
+				INFOPLIST_FILE = "$(SRCROOT)/Bolts/Info.plist";
 			};
 			name = Debug;
 		};
@@ -1268,6 +1260,7 @@
 			isa = XCBuildConfiguration;
 			baseConfigurationReference = 81D646E31D2CA0E000690609 /* Bolts-iOS-Dynamic.xcconfig */;
 			buildSettings = {
+				INFOPLIST_FILE = "$(SRCROOT)/Bolts/Info.plist";
 			};
 			name = Release;
 		};
@@ -1384,6 +1377,7 @@
 			isa = XCBuildConfiguration;
 			baseConfigurationReference = 81D646EA1D2CA0E000690609 /* BoltsTests-iOS.xcconfig */;
 			buildSettings = {
+				ARCHS = "$(ARCHS_STANDARD)";
 				SDKROOT = iphoneos;
 				SUPPORTED_PLATFORMS = "iphonesimulator iphoneos";
 				VALID_ARCHS = "arm64 arm64e armv7 armv7s";
@@ -1394,6 +1388,7 @@
 			isa = XCBuildConfiguration;
 			baseConfigurationReference = 81D646EA1D2CA0E000690609 /* BoltsTests-iOS.xcconfig */;
 			buildSettings = {
+				ARCHS = "$(ARCHS_STANDARD)";
 				SDKROOT = iphoneos;
 				SUPPORTED_PLATFORMS = "iphonesimulator iphoneos";
 				VALID_ARCHS = "arm64 arm64e armv7 armv7s";
@@ -1404,6 +1399,7 @@
 			isa = XCBuildConfiguration;
 			baseConfigurationReference = 81D646EB1D2CA0E000690609 /* BoltsTests-OSX.xcconfig */;
 			buildSettings = {
+				MACOSX_DEPLOYMENT_TARGET = 10.9;
 			};
 			name = Debug;
 		};
@@ -1411,6 +1407,7 @@
 			isa = XCBuildConfiguration;
 			baseConfigurationReference = 81D646EB1D2CA0E000690609 /* BoltsTests-OSX.xcconfig */;
 			buildSettings = {
+				MACOSX_DEPLOYMENT_TARGET = 10.9;
 			};
 			name = Release;
 		};
diff --git a/Bolts.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Bolts.xcodeproj/project.xcworkspace/contents.xcworkspacedata
index eb7b71f..a7adffe 100644
--- a/Bolts.xcodeproj/project.xcworkspace/contents.xcworkspacedata
+++ b/Bolts.xcodeproj/project.xcworkspace/contents.xcworkspacedata
@@ -2,6 +2,6 @@
 <Workspace
    version = "1.0">
    <FileRef
-      location = "self:Bolts.xcodeproj">
+      location = "self:../Bolts/Common">
    </FileRef>
 </Workspace>
diff --git a/Bolts/Common/BFCancellationToken.h b/Bolts/BFCancellationToken.h
similarity index 95%
rename from Bolts/Common/BFCancellationToken.h
rename to Bolts/BFCancellationToken.h
index bda32ee..214d21f 100644
--- a/Bolts/Common/BFCancellationToken.h
+++ b/Bolts/BFCancellationToken.h
@@ -10,7 +10,7 @@
 
 #import <Foundation/Foundation.h>
 
-#import <Bolts/BFCancellationTokenRegistration.h>
+#import "BFCancellationTokenRegistration.h"
 
 NS_ASSUME_NONNULL_BEGIN
 
diff --git a/Bolts/Common/BFCancellationToken.m b/Bolts/BFCancellationToken.m
similarity index 100%
rename from Bolts/Common/BFCancellationToken.m
rename to Bolts/BFCancellationToken.m
diff --git a/Bolts/Common/BFCancellationTokenRegistration.h b/Bolts/BFCancellationTokenRegistration.h
similarity index 100%
rename from Bolts/Common/BFCancellationTokenRegistration.h
rename to Bolts/BFCancellationTokenRegistration.h
diff --git a/Bolts/Common/BFCancellationTokenRegistration.m b/Bolts/BFCancellationTokenRegistration.m
similarity index 100%
rename from Bolts/Common/BFCancellationTokenRegistration.m
rename to Bolts/BFCancellationTokenRegistration.m
diff --git a/Bolts/Common/BFCancellationTokenSource.h b/Bolts/BFCancellationTokenSource.h
similarity index 100%
rename from Bolts/Common/BFCancellationTokenSource.h
rename to Bolts/BFCancellationTokenSource.h
diff --git a/Bolts/Common/BFCancellationTokenSource.m b/Bolts/BFCancellationTokenSource.m
similarity index 100%
rename from Bolts/Common/BFCancellationTokenSource.m
rename to Bolts/BFCancellationTokenSource.m
diff --git a/Bolts/Common/BFExecutor.h b/Bolts/BFExecutor.h
similarity index 100%
rename from Bolts/Common/BFExecutor.h
rename to Bolts/BFExecutor.h
diff --git a/Bolts/Common/BFExecutor.m b/Bolts/BFExecutor.m
similarity index 100%
rename from Bolts/Common/BFExecutor.m
rename to Bolts/BFExecutor.m
diff --git a/Bolts/Common/BFGeneric.h b/Bolts/BFGeneric.h
similarity index 100%
rename from Bolts/Common/BFGeneric.h
rename to Bolts/BFGeneric.h
diff --git a/Bolts/Common/BFTask.h b/Bolts/BFTask.h
similarity index 99%
rename from Bolts/Common/BFTask.h
rename to Bolts/BFTask.h
index 074c182..bd2c3a3 100644
--- a/Bolts/Common/BFTask.h
+++ b/Bolts/BFTask.h
@@ -10,8 +10,8 @@
 
 #import <Foundation/Foundation.h>
 
-#import <Bolts/BFCancellationToken.h>
-#import <Bolts/BFGeneric.h>
+#import "BFCancellationToken.h"
+#import "BFGeneric.h"
 
 NS_ASSUME_NONNULL_BEGIN
 
diff --git a/Bolts/Common/BFTask.m b/Bolts/BFTask.m
similarity index 100%
rename from Bolts/Common/BFTask.m
rename to Bolts/BFTask.m
diff --git a/Bolts/Common/BFTaskCompletionSource.h b/Bolts/BFTaskCompletionSource.h
similarity index 100%
rename from Bolts/Common/BFTaskCompletionSource.h
rename to Bolts/BFTaskCompletionSource.h
diff --git a/Bolts/Common/BFTaskCompletionSource.m b/Bolts/BFTaskCompletionSource.m
similarity index 100%
rename from Bolts/Common/BFTaskCompletionSource.m
rename to Bolts/BFTaskCompletionSource.m
diff --git a/Bolts/Common/Bolts.h b/Bolts/Bolts.h
similarity index 54%
rename from Bolts/Common/Bolts.h
rename to Bolts/Bolts.h
index a3f2bd6..af0ea8f 100644
--- a/Bolts/Common/Bolts.h
+++ b/Bolts/Bolts.h
@@ -8,15 +8,30 @@
  *
  */
 
-#import <Bolts/BFCancellationToken.h>
-#import <Bolts/BFCancellationTokenRegistration.h>
-#import <Bolts/BFCancellationTokenSource.h>
-#import <Bolts/BFExecutor.h>
-#import <Bolts/BFGeneric.h>
-#import <Bolts/BFTask.h>
-#import <Bolts/BFTaskCompletionSource.h>
-
-#if __has_include(<Bolts/BFAppLink.h>) && TARGET_OS_IPHONE && !TARGET_OS_WATCH && !TARGET_OS_TV
+#import "BFCancellationToken.h"
+#import "BFCancellationTokenRegistration.h"
+#import "BFCancellationTokenSource.h"
+#import "BFExecutor.h"
+#import "BFGeneric.h"
+#import "BFTask.h"
+#import "BFTaskCompletionSource.h"
+
+#if TARGET_OS_IOS || TARGET_OS_SIMULATOR || TARGET_OS_MACCATALYST
+
+#if SWIFT_PACKAGE
+
+#import "../Bolts-iOS/BFAppLink.h"
+#import "../Bolts-iOS/BFAppLinkNavigation.h"
+#import "../Bolts-iOS/BFAppLinkResolving.h"
+#import "../Bolts-iOS/BFAppLinkReturnToRefererController.h"
+#import "../Bolts-iOS/BFAppLinkReturnToRefererView.h"
+#import "../Bolts-iOS/BFAppLinkTarget.h"
+#import "../Bolts-iOS/BFMeasurementEvent.h"
+#import "../Bolts-iOS/BFURL.h"
+#import "../Bolts-iOS/BFWebViewAppLinkResolver.h"
+
+#else
+
 #import <Bolts/BFAppLink.h>
 #import <Bolts/BFAppLinkNavigation.h>
 #import <Bolts/BFAppLinkResolving.h>
@@ -26,6 +41,9 @@
 #import <Bolts/BFMeasurementEvent.h>
 #import <Bolts/BFURL.h>
 #import <Bolts/BFWebViewAppLinkResolver.h>
+
+#endif
+
 #endif
 
 
diff --git a/Bolts/Common/Bolts.m b/Bolts/Bolts.m
similarity index 100%
rename from Bolts/Common/Bolts.m
rename to Bolts/Bolts.m
diff --git a/Bolts/Resources/Info.plist b/Bolts/Info.plist
similarity index 100%
rename from Bolts/Resources/Info.plist
rename to Bolts/Info.plist
diff --git a/Bolts/en.lproj/Localizable.strings b/Bolts/en.lproj/Localizable.strings
deleted file mode 100644
index 50f287cfff7f5c0eacab03554dca96b218da68f4..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 226
zcmb7-%?g505Ju11r?^CJTqLbSaOD&D0+-MX%EF)5uMR@4+{kd5@63GP-0vqRBT(^T
z;7MeX+J%C;qmf6|z@46(G`S6OqnhpgI*Y2SHy+mC9eG<PHyJqz2Ws=PzHZHJ-AXxg
Pq|_fMeEV}3e@plQEg&UK

diff --git a/Bolts/Resources/iOS.modulemap b/Bolts/iOS.modulemap
similarity index 100%
rename from Bolts/Resources/iOS.modulemap
rename to Bolts/iOS.modulemap
diff --git a/BoltsTests/AppLinkReturnToRefererViewTests.m b/BoltsTests/AppLinkReturnToRefererViewTests.m
index aae3581..2eea2ad 100644
--- a/BoltsTests/AppLinkReturnToRefererViewTests.m
+++ b/BoltsTests/AppLinkReturnToRefererViewTests.m
@@ -8,9 +8,15 @@
  *
  */
 
+#if TARGET_OS_IOS || TARGET_OS_SIMULATOR || TARGET_OS_MACCATALYST || TARGET_OS
+
 @import XCTest;
 
+#if SWIFT_PACKAGE
+#import "../Bolts/Bolts.h"
+#else
 #import <Bolts/Bolts.h>
+#endif
 
 static NSString *const BFURLWithRefererData = @"bolts://?foo=bar&al_applink_data=%7B%22a%22%3A%22b%22%2C%22user_agent%22%3A%22Bolts%20iOS%201.0.0%22%2C%22target_url%22%3A%22http%3A%5C%2F%5C%2Fwww.example.com%5C%2Fpath%3Fbaz%3Dbat%22%2C%22referer_app_link%22%3A%7B%22app_name%22%3A%22Facebook%22%2C%22url%22%3A%22fb%3A%5C%2F%5C%2Fsomething%5C%2F%22%7D%7D";
 static NSString *const BFURLWithRefererUrlNoName = @"bolts://?foo=bar&al_applink_data=%7B%22a%22%3A%22b%22%2C%22user_agent%22%3A%22Bolts%20iOS%201.0.0%22%2C%22target_url%22%3A%22http%3A%5C%2F%5C%2Fwww.example.com%5C%2Fpath%3Fbaz%3Dbat%22%2C%22referer_app_link%22%3A%7B%22url%22%3A%22fb%3A%5C%2F%5C%2Fsomething%5C%2F%22%7D%7D";
@@ -103,3 +109,5 @@ static NSString *const BFURLWithRefererNameNoUrl = @"bolts://?foo=bar&al_applink
 }
 
 @end
+
+#endif
diff --git a/BoltsTests/AppLinkTests.m b/BoltsTests/AppLinkTests.m
index 60fe5ef..60036e1 100644
--- a/BoltsTests/AppLinkTests.m
+++ b/BoltsTests/AppLinkTests.m
@@ -6,11 +6,17 @@
 //  Copyright (c) 2014 Parse Inc. All rights reserved.
 //
 
+#if TARGET_OS_IOS || TARGET_OS_SIMULATOR || TARGET_OS_MACCATALYST
+
 @import XCTest;
 @import UIKit;
 @import ObjectiveC.runtime;
 
+#if SWIFT_PACKAGE
+#import "../Bolts/Bolts.h"
+#else
 #import <Bolts/Bolts.h>
+#endif
 
 static NSMutableArray *openedUrls;
 
@@ -1086,3 +1092,5 @@ static NSMutableArray *openedUrls;
 }
 
 @end
+
+#endif
diff --git a/BoltsTests/CancellationTests.m b/BoltsTests/CancellationTests.m
index d501a5b..77b56c5 100644
--- a/BoltsTests/CancellationTests.m
+++ b/BoltsTests/CancellationTests.m
@@ -10,7 +10,11 @@
 
 @import XCTest;
 
+#if SWIFT_PACKAGE
+#import "../Bolts/Bolts.h"
+#else
 #import <Bolts/Bolts.h>
+#endif
 
 @interface CancellationTests : XCTestCase
 @end
diff --git a/BoltsTests/ExecutorTests.m b/BoltsTests/ExecutorTests.m
index b318960..35d87a7 100644
--- a/BoltsTests/ExecutorTests.m
+++ b/BoltsTests/ExecutorTests.m
@@ -10,7 +10,11 @@
 
 @import XCTest;
 
+#if SWIFT_PACKAGE
+#import "../Bolts/Bolts.h"
+#else
 #import <Bolts/Bolts.h>
+#endif
 
 @interface ExecutorTests : XCTestCase
 
diff --git a/BoltsTests/TaskTests.m b/BoltsTests/TaskTests.m
index fcab3e8..75e17d6 100644
--- a/BoltsTests/TaskTests.m
+++ b/BoltsTests/TaskTests.m
@@ -10,7 +10,11 @@
 
 @import XCTest;
 
+#if SWIFT_PACKAGE
+#import "../Bolts/Bolts.h"
+#else
 #import <Bolts/Bolts.h>
+#endif
 
 @interface TaskTests : XCTestCase
 @end
diff --git a/Configurations/Bolts-iOS-Dynamic.xcconfig b/Configurations/Bolts-iOS-Dynamic.xcconfig
index 8bae830..f565a1f 100644
--- a/Configurations/Bolts-iOS-Dynamic.xcconfig
+++ b/Configurations/Bolts-iOS-Dynamic.xcconfig
@@ -15,8 +15,8 @@ PRODUCT_NAME = Bolts
 PRODUCT_BUNDLE_IDENTIFIER = com.bolts.ios
 IPHONEOS_DEPLOYMENT_TARGET = 8.0
 
-MODULEMAP_FILE = $(SRCROOT)/Bolts/Resources/iOS.modulemap
-INFOPLIST_FILE = $(SRCROOT)/Bolts/Resources/Info.plist
+MODULEMAP_FILE = $(SRCROOT)/Bolts/iOS.modulemap
+INFOPLIST_FILE = $(SRCROOT)/Bolts/Info.plist
 
 APPLICATION_EXTENSION_API_ONLY = YES
 
diff --git a/Configurations/Bolts-iOS.xcconfig b/Configurations/Bolts-iOS.xcconfig
index 0544b61..daf8f0e 100644
--- a/Configurations/Bolts-iOS.xcconfig
+++ b/Configurations/Bolts-iOS.xcconfig
@@ -15,7 +15,7 @@ PRODUCT_NAME = Bolts
 PRODUCT_BUNDLE_IDENTIFIER = com.bolts.ios
 IPHONEOS_DEPLOYMENT_TARGET = 8.0
 
-MODULEMAP_FILE = $(SRCROOT)/Bolts/Resources/iOS.modulemap
-INFOPLIST_FILE = $(SRCROOT)/Bolts/Resources/Info.plist
+MODULEMAP_FILE = $(SRCROOT)/Bolts/iOS.modulemap
+INFOPLIST_FILE = $(SRCROOT)/Bolts/Info.plist
 
 APPLICATION_EXTENSION_API_ONLY = YES
diff --git a/Configurations/Bolts-macOS.xcconfig b/Configurations/Bolts-macOS.xcconfig
index 344b29c..b065968 100644
--- a/Configurations/Bolts-macOS.xcconfig
+++ b/Configurations/Bolts-macOS.xcconfig
@@ -15,7 +15,7 @@ PRODUCT_NAME = Bolts
 PRODUCT_BUNDLE_IDENTIFIER = com.bolts.macos
 MACOSX_DEPLOYMENT_TARGET = 10.8
 
-INFOPLIST_FILE = $(SRCROOT)/Bolts/Resources/Info.plist
+INFOPLIST_FILE = $(SRCROOT)/Bolts/Info.plist
 
 // Use the 1.0.0 to avoid breaking changes with older version of Bolts.
 DYLIB_COMPATIBILITY_VERSION = 1
diff --git a/Configurations/Bolts-tvOS-Dynamic.xcconfig b/Configurations/Bolts-tvOS-Dynamic.xcconfig
index 939c66c..66ff4a3 100644
--- a/Configurations/Bolts-tvOS-Dynamic.xcconfig
+++ b/Configurations/Bolts-tvOS-Dynamic.xcconfig
@@ -14,7 +14,7 @@
 PRODUCT_NAME = Bolts
 PRODUCT_BUNDLE_IDENTIFIER = com.bolts.tvos
 
-INFOPLIST_FILE = $(SRCROOT)/Bolts/Resources/Info.plist
+INFOPLIST_FILE = $(SRCROOT)/Bolts/Info.plist
 
 // Use the 1.0.0 to avoid breaking changes with older version of Bolts.
 DYLIB_COMPATIBILITY_VERSION = 1
diff --git a/Configurations/Bolts-tvOS.xcconfig b/Configurations/Bolts-tvOS.xcconfig
index d1caf3f..19f909f 100644
--- a/Configurations/Bolts-tvOS.xcconfig
+++ b/Configurations/Bolts-tvOS.xcconfig
@@ -14,6 +14,6 @@
 PRODUCT_NAME = Bolts
 PRODUCT_BUNDLE_IDENTIFIER = com.bolts.tvos
 
-INFOPLIST_FILE = $(SRCROOT)/Bolts/Resources/Info.plist
+INFOPLIST_FILE = $(SRCROOT)/Bolts/Info.plist
 
 APPLICATION_EXTENSION_API_ONLY = YES
diff --git a/Configurations/Bolts-watchOS-Dynamic.xcconfig b/Configurations/Bolts-watchOS-Dynamic.xcconfig
index 458377c..f26d715 100644
--- a/Configurations/Bolts-watchOS-Dynamic.xcconfig
+++ b/Configurations/Bolts-watchOS-Dynamic.xcconfig
@@ -15,7 +15,7 @@ PRODUCT_NAME = Bolts
 PRODUCT_BUNDLE_IDENTIFIER = com.bolts.watchos
 WATCHOS_DEPLOYMENT_TARGET = 2.0
 
-INFOPLIST_FILE = $(SRCROOT)/Bolts/Resources/Info.plist
+INFOPLIST_FILE = $(SRCROOT)/Bolts/Info.plist
 
 // Use the 1.0.0 to avoid breaking changes with older version of Bolts.
 DYLIB_COMPATIBILITY_VERSION = 1
diff --git a/Configurations/Bolts-watchOS.xcconfig b/Configurations/Bolts-watchOS.xcconfig
index 6095d15..3635c0e 100644
--- a/Configurations/Bolts-watchOS.xcconfig
+++ b/Configurations/Bolts-watchOS.xcconfig
@@ -15,6 +15,6 @@ PRODUCT_NAME = Bolts
 PRODUCT_BUNDLE_IDENTIFIER = com.bolts.watchos
 WATCHOS_DEPLOYMENT_TARGET = 2.0
 
-INFOPLIST_FILE = $(SRCROOT)/Bolts/Resources/Info.plist
+INFOPLIST_FILE = $(SRCROOT)/Bolts/Info.plist
 
 APPLICATION_EXTENSION_API_ONLY = YES
diff --git a/Configurations/BoltsTests-OSX.xcconfig b/Configurations/BoltsTests-OSX.xcconfig
index 41bd07d..5ad17ee 100644
--- a/Configurations/BoltsTests-OSX.xcconfig
+++ b/Configurations/BoltsTests-OSX.xcconfig
@@ -14,6 +14,6 @@ PRODUCT_NAME = BoltsTests-OSX
 PRODUCT_MODULE_NAME = BoltsTests
 PRODUCT_BUNDLE_IDENTIFIER = com.bolts.osx.tests
 
-MACOSX_DEPLOYMENT_TARGET = 10.8
+MACOSX_DEPLOYMENT_TARGET = 10.9
 
 INFOPLIST_FILE = BoltsTests/BoltsTests-Info.plist
diff --git a/Package.swift b/Package.swift
new file mode 100644
index 0000000..667092d
--- /dev/null
+++ b/Package.swift
@@ -0,0 +1,33 @@
+// swift-tools-version:5.3
+// The swift-tools-version declares the minimum version of Swift required to build this package.
+
+import PackageDescription
+
+let package = Package(
+    name: "Bolts",
+    defaultLocalization: "en",
+    products: [
+        // Products define the executables and libraries a package produces, and make them visible to other packages.
+        .library(
+            name: "Bolts",
+            targets: ["Bolts"]),
+    ],
+    targets: [
+        .target(
+            name: "Bolts",
+            dependencies: [.target(name: "Bolts-iOS")],
+            path: "Bolts",
+            exclude: ["Info.plist"]
+        ),
+        .target(
+            name: "Bolts-iOS",
+            path: "Bolts-iOS"
+        ),
+//        .testTarget(
+//            name: "Bolts-Tests",
+//            dependencies: [.target(name: "Bolts-iOS")],
+//            path: "BoltsTests",
+//            exclude: ["BoltsTests-Info.plist"]
+//        )
+    ]
+)
-- 
GitLab


From 946a4ae436d5b3ed0a3298b2ff280ad1328bddcf Mon Sep 17 00:00:00 2001
From: drdaz <drdaz7@gmail.com>
Date: Thu, 20 May 2021 15:20:02 +0200
Subject: [PATCH 2/6] Fixes tests

---
 Bolts.xcodeproj/project.pbxproj | 36 ++++++++++++++++++++-------------
 1 file changed, 22 insertions(+), 14 deletions(-)

diff --git a/Bolts.xcodeproj/project.pbxproj b/Bolts.xcodeproj/project.pbxproj
index 0a43cf3..420a2d4 100644
--- a/Bolts.xcodeproj/project.pbxproj
+++ b/Bolts.xcodeproj/project.pbxproj
@@ -146,13 +146,17 @@
 		8E8C8EFB17F23E5F00E3F1C7 /* TaskTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 8E9C3D1C17DE9F6500427E62 /* TaskTests.m */; };
 		8E8C8F2917F241FF00E3F1C7 /* TaskTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 8E9C3D1C17DE9F6500427E62 /* TaskTests.m */; };
 		8EDDA63017E17DDC00655F8A /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8E9C3CEC17DE9DE000427E62 /* Foundation.framework */; };
-		BCBD72B42652C70200F6BFFD /* Bolts.h in Headers */ = {isa = PBXBuildFile; fileRef = BCBD72B32652C70200F6BFFD /* Bolts.h */; };
-		BCBD72B52652C70200F6BFFD /* Bolts.h in Headers */ = {isa = PBXBuildFile; fileRef = BCBD72B32652C70200F6BFFD /* Bolts.h */; };
-		BCBD72B62652C70200F6BFFD /* Bolts.h in Headers */ = {isa = PBXBuildFile; fileRef = BCBD72B32652C70200F6BFFD /* Bolts.h */; };
-		BCBD72B72652C70200F6BFFD /* Bolts.h in Headers */ = {isa = PBXBuildFile; fileRef = BCBD72B32652C70200F6BFFD /* Bolts.h */; };
-		BCBD72B82652C70200F6BFFD /* Bolts.h in Headers */ = {isa = PBXBuildFile; fileRef = BCBD72B32652C70200F6BFFD /* Bolts.h */; };
-		BCBD72B92652C70200F6BFFD /* Bolts.h in Headers */ = {isa = PBXBuildFile; fileRef = BCBD72B32652C70200F6BFFD /* Bolts.h */; };
-		BCBD72BA2652C70200F6BFFD /* Bolts.h in Headers */ = {isa = PBXBuildFile; fileRef = BCBD72B32652C70200F6BFFD /* Bolts.h */; };
+		BCB644CE265698470047F5DB /* Bolts.m in Sources */ = {isa = PBXBuildFile; fileRef = BCBD72BB2652C70C00F6BFFD /* Bolts.m */; };
+		BCB644CF265698470047F5DB /* Bolts.m in Sources */ = {isa = PBXBuildFile; fileRef = BCBD72BB2652C70C00F6BFFD /* Bolts.m */; };
+		BCB644D0265698490047F5DB /* Bolts.m in Sources */ = {isa = PBXBuildFile; fileRef = BCBD72BB2652C70C00F6BFFD /* Bolts.m */; };
+		BCB644D1265698490047F5DB /* Bolts.m in Sources */ = {isa = PBXBuildFile; fileRef = BCBD72BB2652C70C00F6BFFD /* Bolts.m */; };
+		BCB644D2265699210047F5DB /* Bolts.h in Headers */ = {isa = PBXBuildFile; fileRef = BCBD72B32652C70200F6BFFD /* Bolts.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		BCBD72B52652C70200F6BFFD /* Bolts.h in Headers */ = {isa = PBXBuildFile; fileRef = BCBD72B32652C70200F6BFFD /* Bolts.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		BCBD72B62652C70200F6BFFD /* Bolts.h in Headers */ = {isa = PBXBuildFile; fileRef = BCBD72B32652C70200F6BFFD /* Bolts.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		BCBD72B72652C70200F6BFFD /* Bolts.h in Headers */ = {isa = PBXBuildFile; fileRef = BCBD72B32652C70200F6BFFD /* Bolts.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		BCBD72B82652C70200F6BFFD /* Bolts.h in Headers */ = {isa = PBXBuildFile; fileRef = BCBD72B32652C70200F6BFFD /* Bolts.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		BCBD72B92652C70200F6BFFD /* Bolts.h in Headers */ = {isa = PBXBuildFile; fileRef = BCBD72B32652C70200F6BFFD /* Bolts.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		BCBD72BA2652C70200F6BFFD /* Bolts.h in Headers */ = {isa = PBXBuildFile; fileRef = BCBD72B32652C70200F6BFFD /* Bolts.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		BCBD72BC2652C70C00F6BFFD /* Bolts.m in Sources */ = {isa = PBXBuildFile; fileRef = BCBD72BB2652C70C00F6BFFD /* Bolts.m */; };
 		BCBD72BD2652C70C00F6BFFD /* Bolts.m in Sources */ = {isa = PBXBuildFile; fileRef = BCBD72BB2652C70C00F6BFFD /* Bolts.m */; };
 		BCBD72BE2652C70C00F6BFFD /* Bolts.m in Sources */ = {isa = PBXBuildFile; fileRef = BCBD72BB2652C70C00F6BFFD /* Bolts.m */; };
@@ -645,6 +649,7 @@
 			isa = PBXHeadersBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				BCBD72B52652C70200F6BFFD /* Bolts.h in Headers */,
 				BCBD72CF2652E57B00F6BFFD /* BFAppLink_Internal.h in Headers */,
 				1D5D7DBA1BE3CE8200FD67C7 /* BFWebViewAppLinkResolver.h in Headers */,
 				8160B82D1DE6277200C6E285 /* BFGeneric.h in Headers */,
@@ -659,7 +664,6 @@
 				1D5D7DC41BE3CE8200FD67C7 /* BFAppLinkResolving.h in Headers */,
 				1D5D7DC61BE3CE8200FD67C7 /* BFURL.h in Headers */,
 				BCBD72CD2652E57B00F6BFFD /* BFAppLinkReturnToRefererView_Internal.h in Headers */,
-				BCBD72B52652C70200F6BFFD /* Bolts.h in Headers */,
 				1D5D7DC71BE3CE8200FD67C7 /* BFTaskCompletionSource.h in Headers */,
 				1D5D7DCA1BE3CE8200FD67C7 /* BFMeasurementEvent.h in Headers */,
 				1D5D7DCD1BE3CE8200FD67C7 /* BFCancellationToken.h in Headers */,
@@ -673,8 +677,8 @@
 			isa = PBXHeadersBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
-				8178F9901BB0F87700AD289D /* BFCancellationTokenRegistration.h in Headers */,
 				BCBD72B92652C70200F6BFFD /* Bolts.h in Headers */,
+				8178F9901BB0F87700AD289D /* BFCancellationTokenRegistration.h in Headers */,
 				8178F9911BB0F87700AD289D /* BFTask.h in Headers */,
 				8178F9921BB0F87700AD289D /* BFCancellationTokenSource.h in Headers */,
 				8178F9931BB0F87700AD289D /* BFExecutor.h in Headers */,
@@ -688,8 +692,8 @@
 			isa = PBXHeadersBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
-				819573E51C2B8ECB00BFCA39 /* BFCancellationTokenRegistration.h in Headers */,
 				BCBD72BA2652C70200F6BFFD /* Bolts.h in Headers */,
+				819573E51C2B8ECB00BFCA39 /* BFCancellationTokenRegistration.h in Headers */,
 				819573E61C2B8ECB00BFCA39 /* BFTask.h in Headers */,
 				819573E71C2B8ECB00BFCA39 /* BFCancellationTokenSource.h in Headers */,
 				819573E81C2B8ECB00BFCA39 /* BFExecutor.h in Headers */,
@@ -703,8 +707,8 @@
 			isa = PBXHeadersBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
-				7CA39C931ADE715400DD78CC /* BFCancellationTokenRegistration.h in Headers */,
 				BCBD72B62652C70200F6BFFD /* Bolts.h in Headers */,
+				7CA39C931ADE715400DD78CC /* BFCancellationTokenRegistration.h in Headers */,
 				81D0EE8519AFAA190000AE75 /* BFTask.h in Headers */,
 				7C60AECA1ACF1A0B00747DD7 /* BFCancellationTokenSource.h in Headers */,
 				81D0EE8819AFAA240000AE75 /* BFExecutor.h in Headers */,
@@ -718,8 +722,8 @@
 			isa = PBXHeadersBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
-				81E94D5E1C2B8BF200A6291E /* BFCancellationTokenRegistration.h in Headers */,
 				BCBD72B82652C70200F6BFFD /* Bolts.h in Headers */,
+				81E94D5E1C2B8BF200A6291E /* BFCancellationTokenRegistration.h in Headers */,
 				81E94D5F1C2B8BF200A6291E /* BFTask.h in Headers */,
 				81E94D601C2B8BF200A6291E /* BFCancellationTokenSource.h in Headers */,
 				81E94D611C2B8BF200A6291E /* BFExecutor.h in Headers */,
@@ -733,6 +737,7 @@
 			isa = PBXHeadersBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				BCB644D2265699210047F5DB /* Bolts.h in Headers */,
 				81ED94311BE1481900795F05 /* BFWebViewAppLinkResolver.h in Headers */,
 				8160B82C1DE6277200C6E285 /* BFGeneric.h in Headers */,
 				81ED941D1BE147CF00795F05 /* BFCancellationTokenRegistration.h in Headers */,
@@ -749,7 +754,6 @@
 				BCBD72C82652E50D00F6BFFD /* BFURL_Internal.h in Headers */,
 				81ED943E1BE1481900795F05 /* BFURL.h in Headers */,
 				81ED94221BE147CF00795F05 /* BFTaskCompletionSource.h in Headers */,
-				BCBD72B42652C70200F6BFFD /* Bolts.h in Headers */,
 				81ED943B1BE1481900795F05 /* BFMeasurementEvent.h in Headers */,
 				81ED94251BE147CF00795F05 /* BFCancellationToken.h in Headers */,
 				81ED942C1BE1481900795F05 /* BFAppLink.h in Headers */,
@@ -761,8 +765,8 @@
 			isa = PBXHeadersBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
-				F5AFC9F61BA752750076E927 /* BFCancellationTokenRegistration.h in Headers */,
 				BCBD72B72652C70200F6BFFD /* Bolts.h in Headers */,
+				F5AFC9F61BA752750076E927 /* BFCancellationTokenRegistration.h in Headers */,
 				F5AFC9F71BA752750076E927 /* BFTask.h in Headers */,
 				F5AFC9F81BA752750076E927 /* BFCancellationTokenSource.h in Headers */,
 				F5AFC9F91BA752750076E927 /* BFExecutor.h in Headers */,
@@ -1070,6 +1074,7 @@
 			isa = PBXSourcesBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				BCB644D1265698490047F5DB /* Bolts.m in Sources */,
 				1EC3017118CDAA8400D06D07 /* AppDelegate.m in Sources */,
 				1EC3016D18CDAA8400D06D07 /* main.m in Sources */,
 			);
@@ -1143,6 +1148,7 @@
 			isa = PBXSourcesBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				BCB644CF265698470047F5DB /* Bolts.m in Sources */,
 				81DC1A621B7A7F4000F491DC /* ExecutorTests.m in Sources */,
 				7C60AEC61ACF19F900747DD7 /* CancellationTests.m in Sources */,
 				8E8C8EFB17F23E5F00E3F1C7 /* TaskTests.m in Sources */,
@@ -1155,6 +1161,7 @@
 			isa = PBXSourcesBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				BCB644CE265698470047F5DB /* Bolts.m in Sources */,
 				81DC1A631B7A7F4000F491DC /* ExecutorTests.m in Sources */,
 				8E8C8F2917F241FF00E3F1C7 /* TaskTests.m in Sources */,
 				7C60AEC71ACF19FD00747DD7 /* CancellationTests.m in Sources */,
@@ -1195,6 +1202,7 @@
 			isa = PBXSourcesBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				BCB644D0265698490047F5DB /* Bolts.m in Sources */,
 				F5AFCA081BA752770076E927 /* ExecutorTests.m in Sources */,
 				F5AFCA0A1BA752770076E927 /* TaskTests.m in Sources */,
 				F5AFCA0B1BA752770076E927 /* CancellationTests.m in Sources */,
-- 
GitLab


From 3153340466cdcaf3244a22106cc18e0cf871fdf3 Mon Sep 17 00:00:00 2001
From: drdaz <drdaz7@gmail.com>
Date: Thu, 20 May 2021 17:15:43 +0200
Subject: [PATCH 3/6] Fixes pods, Xcode 12 issues

---
 Bolts-iOS/BFAppLink.h                             |  2 +-
 Bolts-iOS/BFAppLink.m                             |  2 +-
 Bolts-iOS/BFAppLinkNavigation.h                   |  2 +-
 Bolts-iOS/BFAppLinkNavigation.m                   |  2 +-
 Bolts-iOS/BFAppLinkResolving.h                    |  2 +-
 Bolts-iOS/BFAppLinkReturnToRefererController.h    |  2 +-
 Bolts-iOS/BFAppLinkReturnToRefererController.m    |  2 +-
 Bolts-iOS/BFAppLinkReturnToRefererView.h          |  2 +-
 Bolts-iOS/BFAppLinkReturnToRefererView.m          |  2 +-
 Bolts-iOS/BFAppLinkReturnToRefererView_Internal.h |  2 +-
 Bolts-iOS/BFAppLinkTarget.h                       |  2 +-
 Bolts-iOS/BFAppLinkTarget.m                       |  2 +-
 Bolts-iOS/BFAppLink_Internal.h                    |  2 +-
 Bolts-iOS/BFMeasurementEvent.h                    |  2 +-
 Bolts-iOS/BFMeasurementEvent.m                    |  4 ++--
 Bolts-iOS/BFMeasurementEvent_Internal.h           |  2 +-
 Bolts-iOS/BFURL.h                                 |  2 +-
 Bolts-iOS/BFURL.m                                 |  2 +-
 Bolts-iOS/BFURL_Internal.h                        |  2 +-
 Bolts-iOS/BFWebViewAppLinkResolver.h              |  2 +-
 Bolts-iOS/BFWebViewAppLinkResolver.m              |  2 +-
 Bolts.podspec                                     | 14 +++++++-------
 Bolts.xcodeproj/project.pbxproj                   | 14 ++++++++++----
 Bolts/BFTask.m                                    |  2 +-
 Bolts/Bolts.h                                     |  2 +-
 BoltsTests/AppLinkReturnToRefererViewTests.m      |  2 +-
 BoltsTests/AppLinkTests.m                         |  2 +-
 Configurations/Bolts-macOS.xcconfig               |  2 +-
 28 files changed, 44 insertions(+), 38 deletions(-)

diff --git a/Bolts-iOS/BFAppLink.h b/Bolts-iOS/BFAppLink.h
index 3bebe3b..9686475 100644
--- a/Bolts-iOS/BFAppLink.h
+++ b/Bolts-iOS/BFAppLink.h
@@ -8,7 +8,7 @@
  *
  */
 
-#if TARGET_OS_IOS || TARGET_OS_SIMULATOR || TARGET_OS_MACCATALYST
+#if TARGET_OS_IPHONE && !TARGET_OS_WATCH && !TARGET_OS_TV
 
 #import <Foundation/Foundation.h>
 
diff --git a/Bolts-iOS/BFAppLink.m b/Bolts-iOS/BFAppLink.m
index d235c95..12574d6 100644
--- a/Bolts-iOS/BFAppLink.m
+++ b/Bolts-iOS/BFAppLink.m
@@ -8,7 +8,7 @@
  *
  */
 
-#if TARGET_OS_IOS || TARGET_OS_SIMULATOR || TARGET_OS_MACCATALYST
+#if TARGET_OS_IPHONE && !TARGET_OS_WATCH && !TARGET_OS_TV
 
 #import "BFAppLink_Internal.h"
 
diff --git a/Bolts-iOS/BFAppLinkNavigation.h b/Bolts-iOS/BFAppLinkNavigation.h
index 5db1b76..c087eb5 100644
--- a/Bolts-iOS/BFAppLinkNavigation.h
+++ b/Bolts-iOS/BFAppLinkNavigation.h
@@ -8,7 +8,7 @@
  *
  */
 
-#if TARGET_OS_IOS || TARGET_OS_SIMULATOR || TARGET_OS_MACCATALYST
+#if TARGET_OS_IPHONE && !TARGET_OS_WATCH && !TARGET_OS_TV
 
 #import <Foundation/Foundation.h>
 
diff --git a/Bolts-iOS/BFAppLinkNavigation.m b/Bolts-iOS/BFAppLinkNavigation.m
index 470260e..6e6335b 100644
--- a/Bolts-iOS/BFAppLinkNavigation.m
+++ b/Bolts-iOS/BFAppLinkNavigation.m
@@ -8,7 +8,7 @@
  *
  */
 
-#if TARGET_OS_IOS || TARGET_OS_SIMULATOR || TARGET_OS_MACCATALYST
+#if TARGET_OS_IPHONE && !TARGET_OS_WATCH && !TARGET_OS_TV
 
 #import <UIKit/UIKit.h>
 
diff --git a/Bolts-iOS/BFAppLinkResolving.h b/Bolts-iOS/BFAppLinkResolving.h
index 1e00d62..ad9c48d 100644
--- a/Bolts-iOS/BFAppLinkResolving.h
+++ b/Bolts-iOS/BFAppLinkResolving.h
@@ -8,7 +8,7 @@
  *
  */
 
-#if TARGET_OS_IOS || TARGET_OS_SIMULATOR || TARGET_OS_MACCATALYST
+#if TARGET_OS_IPHONE && !TARGET_OS_WATCH && !TARGET_OS_TV
 
 #import <Foundation/Foundation.h>
 
diff --git a/Bolts-iOS/BFAppLinkReturnToRefererController.h b/Bolts-iOS/BFAppLinkReturnToRefererController.h
index 9aab120..f7cbd5d 100644
--- a/Bolts-iOS/BFAppLinkReturnToRefererController.h
+++ b/Bolts-iOS/BFAppLinkReturnToRefererController.h
@@ -8,7 +8,7 @@
  *
  */
 
-#if TARGET_OS_IOS || TARGET_OS_SIMULATOR || TARGET_OS_MACCATALYST
+#if TARGET_OS_IPHONE && !TARGET_OS_WATCH && !TARGET_OS_TV
 
 #import <Foundation/Foundation.h>
 #import <UIKit/UIKit.h>
diff --git a/Bolts-iOS/BFAppLinkReturnToRefererController.m b/Bolts-iOS/BFAppLinkReturnToRefererController.m
index 5aab464..92198c2 100644
--- a/Bolts-iOS/BFAppLinkReturnToRefererController.m
+++ b/Bolts-iOS/BFAppLinkReturnToRefererController.m
@@ -8,7 +8,7 @@
  *
  */
 
-#if TARGET_OS_IOS || TARGET_OS_SIMULATOR || TARGET_OS_MACCATALYST
+#if TARGET_OS_IPHONE && !TARGET_OS_WATCH && !TARGET_OS_TV
 
 #import "BFAppLinkReturnToRefererController.h"
 
diff --git a/Bolts-iOS/BFAppLinkReturnToRefererView.h b/Bolts-iOS/BFAppLinkReturnToRefererView.h
index f26327f..0dfeffc 100644
--- a/Bolts-iOS/BFAppLinkReturnToRefererView.h
+++ b/Bolts-iOS/BFAppLinkReturnToRefererView.h
@@ -8,7 +8,7 @@
  *
  */
 
-#if TARGET_OS_IOS || TARGET_OS_SIMULATOR || TARGET_OS_MACCATALYST
+#if TARGET_OS_IPHONE && !TARGET_OS_WATCH && !TARGET_OS_TV
 
 #import <Foundation/Foundation.h>
 
diff --git a/Bolts-iOS/BFAppLinkReturnToRefererView.m b/Bolts-iOS/BFAppLinkReturnToRefererView.m
index 07c0b51..5dc5f9c 100644
--- a/Bolts-iOS/BFAppLinkReturnToRefererView.m
+++ b/Bolts-iOS/BFAppLinkReturnToRefererView.m
@@ -8,7 +8,7 @@
  *
  */
 
-#if TARGET_OS_IOS || TARGET_OS_SIMULATOR || TARGET_OS_MACCATALYST
+#if TARGET_OS_IPHONE && !TARGET_OS_WATCH && !TARGET_OS_TV
 
 #import "BFAppLinkReturnToRefererView.h"
 
diff --git a/Bolts-iOS/BFAppLinkReturnToRefererView_Internal.h b/Bolts-iOS/BFAppLinkReturnToRefererView_Internal.h
index 2f4140a..6672700 100644
--- a/Bolts-iOS/BFAppLinkReturnToRefererView_Internal.h
+++ b/Bolts-iOS/BFAppLinkReturnToRefererView_Internal.h
@@ -8,7 +8,7 @@
  *
  */
 
-#if TARGET_OS_IOS || TARGET_OS_SIMULATOR || TARGET_OS_MACCATALYST
+#if TARGET_OS_IPHONE && !TARGET_OS_WATCH && !TARGET_OS_TV
 
 #import "BFAppLinkReturnToRefererView.h"
 
diff --git a/Bolts-iOS/BFAppLinkTarget.h b/Bolts-iOS/BFAppLinkTarget.h
index 5ce3874..9ca13ae 100644
--- a/Bolts-iOS/BFAppLinkTarget.h
+++ b/Bolts-iOS/BFAppLinkTarget.h
@@ -8,7 +8,7 @@
  *
  */
 
-#if TARGET_OS_IOS || TARGET_OS_SIMULATOR || TARGET_OS_MACCATALYST
+#if TARGET_OS_IPHONE && !TARGET_OS_WATCH && !TARGET_OS_TV
 
 #import <Foundation/Foundation.h>
 
diff --git a/Bolts-iOS/BFAppLinkTarget.m b/Bolts-iOS/BFAppLinkTarget.m
index ce9c181..a29ef8b 100644
--- a/Bolts-iOS/BFAppLinkTarget.m
+++ b/Bolts-iOS/BFAppLinkTarget.m
@@ -8,7 +8,7 @@
  *
  */
 
-#if TARGET_OS_IOS || TARGET_OS_SIMULATOR || TARGET_OS_MACCATALYST
+#if TARGET_OS_IPHONE && !TARGET_OS_WATCH && !TARGET_OS_TV
 
 #import "BFAppLinkTarget.h"
 
diff --git a/Bolts-iOS/BFAppLink_Internal.h b/Bolts-iOS/BFAppLink_Internal.h
index 81db73a..65b7a2b 100644
--- a/Bolts-iOS/BFAppLink_Internal.h
+++ b/Bolts-iOS/BFAppLink_Internal.h
@@ -8,7 +8,7 @@
  *
  */
 
-#if TARGET_OS_IOS || TARGET_OS_SIMULATOR || TARGET_OS_MACCATALYST
+#if TARGET_OS_IPHONE && !TARGET_OS_WATCH && !TARGET_OS_TV
 
 #import "BFAppLink.h"
 
diff --git a/Bolts-iOS/BFMeasurementEvent.h b/Bolts-iOS/BFMeasurementEvent.h
index 4df48b7..f03a49e 100644
--- a/Bolts-iOS/BFMeasurementEvent.h
+++ b/Bolts-iOS/BFMeasurementEvent.h
@@ -8,7 +8,7 @@
  *
  */
 
-#if TARGET_OS_IOS || TARGET_OS_SIMULATOR || TARGET_OS_MACCATALYST
+#if TARGET_OS_IPHONE && !TARGET_OS_WATCH && !TARGET_OS_TV
 
 #import <Foundation/Foundation.h>
 
diff --git a/Bolts-iOS/BFMeasurementEvent.m b/Bolts-iOS/BFMeasurementEvent.m
index 276758d..631430c 100644
--- a/Bolts-iOS/BFMeasurementEvent.m
+++ b/Bolts-iOS/BFMeasurementEvent.m
@@ -8,7 +8,7 @@
  *
  */
 
-#if TARGET_OS_IOS || TARGET_OS_SIMULATOR || TARGET_OS_MACCATALYST
+#if TARGET_OS_IPHONE && !TARGET_OS_WATCH && !TARGET_OS_TV
 
 #import "BFMeasurementEvent_Internal.h"
 
@@ -25,7 +25,7 @@ NSString *const BFAppLinkNavigateInEventName = @"al_nav_in";
 NSString *const BFAppLinkNavigateOutEventName = @"al_nav_out";
 NSString *const BFAppLinkNavigateBackToReferrerEventName = @"al_ref_back_out";
 
-__attribute__((noinline)) void warnOnMissingEventName() {
+__attribute__((noinline)) void warnOnMissingEventName(void) {
     NSLog(@"Warning: Missing event name when logging bolts measurement event. \n"
           " Ignoring this event in logging.");
 }
diff --git a/Bolts-iOS/BFMeasurementEvent_Internal.h b/Bolts-iOS/BFMeasurementEvent_Internal.h
index ac36b67..70381c4 100644
--- a/Bolts-iOS/BFMeasurementEvent_Internal.h
+++ b/Bolts-iOS/BFMeasurementEvent_Internal.h
@@ -8,7 +8,7 @@
  *
  */
 
-#if TARGET_OS_IOS || TARGET_OS_SIMULATOR || TARGET_OS_MACCATALYST
+#if TARGET_OS_IPHONE && !TARGET_OS_WATCH && !TARGET_OS_TV
 
 #import "BFMeasurementEvent.h"
 /*!
diff --git a/Bolts-iOS/BFURL.h b/Bolts-iOS/BFURL.h
index 7ad4c5a..6d1d331 100644
--- a/Bolts-iOS/BFURL.h
+++ b/Bolts-iOS/BFURL.h
@@ -8,7 +8,7 @@
  *
  */
 
-#if TARGET_OS_IOS || TARGET_OS_SIMULATOR || TARGET_OS_MACCATALYST
+#if TARGET_OS_IPHONE && !TARGET_OS_WATCH && !TARGET_OS_TV
 
 #import <Foundation/Foundation.h>
 
diff --git a/Bolts-iOS/BFURL.m b/Bolts-iOS/BFURL.m
index 1266df6..09d328e 100644
--- a/Bolts-iOS/BFURL.m
+++ b/Bolts-iOS/BFURL.m
@@ -8,7 +8,7 @@
  *
  */
 
-#if TARGET_OS_IOS || TARGET_OS_SIMULATOR || TARGET_OS_MACCATALYST
+#if TARGET_OS_IPHONE && !TARGET_OS_WATCH && !TARGET_OS_TV
 
 #import "BFURL_Internal.h"
 #import "BFAppLink_Internal.h"
diff --git a/Bolts-iOS/BFURL_Internal.h b/Bolts-iOS/BFURL_Internal.h
index ac90288..8e61ec7 100644
--- a/Bolts-iOS/BFURL_Internal.h
+++ b/Bolts-iOS/BFURL_Internal.h
@@ -8,7 +8,7 @@
  *
  */
 
-#if TARGET_OS_IOS || TARGET_OS_SIMULATOR || TARGET_OS_MACCATALYST
+#if TARGET_OS_IPHONE && !TARGET_OS_WATCH && !TARGET_OS_TV
 
 #import "BFURL.h"
 
diff --git a/Bolts-iOS/BFWebViewAppLinkResolver.h b/Bolts-iOS/BFWebViewAppLinkResolver.h
index 1122b10..cfecf98 100644
--- a/Bolts-iOS/BFWebViewAppLinkResolver.h
+++ b/Bolts-iOS/BFWebViewAppLinkResolver.h
@@ -8,7 +8,7 @@
  *
  */
 
-#if TARGET_OS_IOS || TARGET_OS_SIMULATOR || TARGET_OS_MACCATALYST
+#if TARGET_OS_IPHONE && !TARGET_OS_WATCH && !TARGET_OS_TV
 
 #import <Foundation/Foundation.h>
 
diff --git a/Bolts-iOS/BFWebViewAppLinkResolver.m b/Bolts-iOS/BFWebViewAppLinkResolver.m
index bb44cbb..bb401e1 100644
--- a/Bolts-iOS/BFWebViewAppLinkResolver.m
+++ b/Bolts-iOS/BFWebViewAppLinkResolver.m
@@ -8,7 +8,7 @@
  *
  */
 
-#if TARGET_OS_IOS || TARGET_OS_SIMULATOR || TARGET_OS_MACCATALYST
+#if TARGET_OS_IPHONE && !TARGET_OS_WATCH && !TARGET_OS_TV
 
 #import <WebKit/WebKit.h>
 #import "BFWebViewAppLinkResolver.h"
diff --git a/Bolts.podspec b/Bolts.podspec
index b435b61..321382e 100644
--- a/Bolts.podspec
+++ b/Bolts.podspec
@@ -14,21 +14,21 @@ Pod::Spec.new do |s|
   s.social_media_url = 'https://twitter.com/ParseIt'
   s.requires_arc = true
 
-  s.ios.deployment_target = '8.0'
-  s.osx.deployment_target = '10.8'
+  s.ios.deployment_target = '9.0'
+  s.osx.deployment_target = '10.9'
   s.watchos.deployment_target = '2.0'
   s.tvos.deployment_target = '9.0'
 
   s.subspec 'Tasks' do |ss|
-    ss.source_files = 'Bolts/Common/*.[hm]'
-    ss.public_header_files = 'Bolts/Common/*.h'
+    ss.source_files = 'Bolts/*.[hm]', 'Bolts-iOS/*.[hm]'
+    ss.public_header_files = 'Bolts/*.h', 'Bolts-iOS/*.h'
   end
 
   s.subspec 'AppLinks' do |ss|
-    ss.ios.deployment_target = '8.0'
+    ss.ios.deployment_target = '9.0'
     ss.dependency 'Bolts/Tasks'
 
-    ss.ios.source_files = 'Bolts/iOS/**/*.[hm]'
-    ss.ios.public_header_files = 'Bolts/iOS/*.h'
+    ss.ios.source_files = 'Bolts-iOS/**/*.[hm]'
+    ss.ios.public_header_files = 'Bolts-iOS/*.h'
   end
 end
diff --git a/Bolts.xcodeproj/project.pbxproj b/Bolts.xcodeproj/project.pbxproj
index 420a2d4..66d13f5 100644
--- a/Bolts.xcodeproj/project.pbxproj
+++ b/Bolts.xcodeproj/project.pbxproj
@@ -1261,6 +1261,7 @@
 			baseConfigurationReference = 81D646E31D2CA0E000690609 /* Bolts-iOS-Dynamic.xcconfig */;
 			buildSettings = {
 				INFOPLIST_FILE = "$(SRCROOT)/Bolts/Info.plist";
+				IPHONEOS_DEPLOYMENT_TARGET = 9.0;
 			};
 			name = Debug;
 		};
@@ -1269,6 +1270,7 @@
 			baseConfigurationReference = 81D646E31D2CA0E000690609 /* Bolts-iOS-Dynamic.xcconfig */;
 			buildSettings = {
 				INFOPLIST_FILE = "$(SRCROOT)/Bolts/Info.plist";
+				IPHONEOS_DEPLOYMENT_TARGET = 9.0;
 			};
 			name = Release;
 		};
@@ -1291,7 +1293,7 @@
 				GCC_WARN_UNDECLARED_SELECTOR = YES;
 				GCC_WARN_UNUSED_FUNCTION = YES;
 				INFOPLIST_FILE = "BoltsTestUI/BoltsTestUI-Info.plist";
-				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+				IPHONEOS_DEPLOYMENT_TARGET = 9.0;
 				PRODUCT_BUNDLE_IDENTIFIER = com.bolts.ios.testapp;
 				PRODUCT_NAME = "$(TARGET_NAME)";
 				SDKROOT = iphoneos;
@@ -1316,7 +1318,7 @@
 				GCC_WARN_UNDECLARED_SELECTOR = YES;
 				GCC_WARN_UNUSED_FUNCTION = YES;
 				INFOPLIST_FILE = "BoltsTestUI/BoltsTestUI-Info.plist";
-				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+				IPHONEOS_DEPLOYMENT_TARGET = 9.0;
 				PRODUCT_BUNDLE_IDENTIFIER = com.bolts.ios.testapp;
 				PRODUCT_NAME = "$(TARGET_NAME)";
 				SDKROOT = iphoneos;
@@ -1371,6 +1373,7 @@
 			isa = XCBuildConfiguration;
 			baseConfigurationReference = 81D646E41D2CA0E000690609 /* Bolts-iOS.xcconfig */;
 			buildSettings = {
+				IPHONEOS_DEPLOYMENT_TARGET = 9.0;
 			};
 			name = Debug;
 		};
@@ -1378,6 +1381,7 @@
 			isa = XCBuildConfiguration;
 			baseConfigurationReference = 81D646E41D2CA0E000690609 /* Bolts-iOS.xcconfig */;
 			buildSettings = {
+				IPHONEOS_DEPLOYMENT_TARGET = 9.0;
 			};
 			name = Release;
 		};
@@ -1424,7 +1428,7 @@
 			baseConfigurationReference = 81D646FA1D2CA0E000690609 /* Debug.xcconfig */;
 			buildSettings = {
 				CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
-				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+				IPHONEOS_DEPLOYMENT_TARGET = 9.0;
 				MACOSX_DEPLOYMENT_TARGET = 10.13;
 			};
 			name = Debug;
@@ -1434,7 +1438,7 @@
 			baseConfigurationReference = 81D646FB1D2CA0E000690609 /* Release.xcconfig */;
 			buildSettings = {
 				CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
-				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+				IPHONEOS_DEPLOYMENT_TARGET = 9.0;
 				MACOSX_DEPLOYMENT_TARGET = 10.13;
 			};
 			name = Release;
@@ -1443,6 +1447,7 @@
 			isa = XCBuildConfiguration;
 			baseConfigurationReference = 81D646E51D2CA0E000690609 /* Bolts-macOS.xcconfig */;
 			buildSettings = {
+				MACOSX_DEPLOYMENT_TARGET = 10.9;
 			};
 			name = Debug;
 		};
@@ -1450,6 +1455,7 @@
 			isa = XCBuildConfiguration;
 			baseConfigurationReference = 81D646E51D2CA0E000690609 /* Bolts-macOS.xcconfig */;
 			buildSettings = {
+				MACOSX_DEPLOYMENT_TARGET = 10.9;
 			};
 			name = Release;
 		};
diff --git a/Bolts/BFTask.m b/Bolts/BFTask.m
index 0d6bd4c..1a8c146 100644
--- a/Bolts/BFTask.m
+++ b/Bolts/BFTask.m
@@ -16,7 +16,7 @@
 
 NS_ASSUME_NONNULL_BEGIN
 
-__attribute__ ((noinline)) void warnBlockingOperationOnMainThread() {
+__attribute__ ((noinline)) void warnBlockingOperationOnMainThread(void) {
     NSLog(@"Warning: A long-running operation is being executed on the main thread. \n"
           " Break on warnBlockingOperationOnMainThread() to debug.");
 }
diff --git a/Bolts/Bolts.h b/Bolts/Bolts.h
index af0ea8f..2f5768f 100644
--- a/Bolts/Bolts.h
+++ b/Bolts/Bolts.h
@@ -16,7 +16,7 @@
 #import "BFTask.h"
 #import "BFTaskCompletionSource.h"
 
-#if TARGET_OS_IOS || TARGET_OS_SIMULATOR || TARGET_OS_MACCATALYST
+#if TARGET_OS_IPHONE && !TARGET_OS_WATCH && !TARGET_OS_TV
 
 #if SWIFT_PACKAGE
 
diff --git a/BoltsTests/AppLinkReturnToRefererViewTests.m b/BoltsTests/AppLinkReturnToRefererViewTests.m
index 2eea2ad..07a8795 100644
--- a/BoltsTests/AppLinkReturnToRefererViewTests.m
+++ b/BoltsTests/AppLinkReturnToRefererViewTests.m
@@ -8,7 +8,7 @@
  *
  */
 
-#if TARGET_OS_IOS || TARGET_OS_SIMULATOR || TARGET_OS_MACCATALYST || TARGET_OS
+#if TARGET_OS_IPHONE && !TARGET_OS_WATCH && !TARGET_OS_TV || TARGET_OS
 
 @import XCTest;
 
diff --git a/BoltsTests/AppLinkTests.m b/BoltsTests/AppLinkTests.m
index 60036e1..b5ca4ba 100644
--- a/BoltsTests/AppLinkTests.m
+++ b/BoltsTests/AppLinkTests.m
@@ -6,7 +6,7 @@
 //  Copyright (c) 2014 Parse Inc. All rights reserved.
 //
 
-#if TARGET_OS_IOS || TARGET_OS_SIMULATOR || TARGET_OS_MACCATALYST
+#if TARGET_OS_IPHONE && !TARGET_OS_WATCH && !TARGET_OS_TV
 
 @import XCTest;
 @import UIKit;
diff --git a/Configurations/Bolts-macOS.xcconfig b/Configurations/Bolts-macOS.xcconfig
index b065968..5ce6360 100644
--- a/Configurations/Bolts-macOS.xcconfig
+++ b/Configurations/Bolts-macOS.xcconfig
@@ -13,7 +13,7 @@
 
 PRODUCT_NAME = Bolts
 PRODUCT_BUNDLE_IDENTIFIER = com.bolts.macos
-MACOSX_DEPLOYMENT_TARGET = 10.8
+MACOSX_DEPLOYMENT_TARGET = 10.9
 
 INFOPLIST_FILE = $(SRCROOT)/Bolts/Info.plist
 
-- 
GitLab


From a1a82d59087664a0397d330335b36c75df704964 Mon Sep 17 00:00:00 2001
From: Darren Black <drdaz7@gmail.com>
Date: Fri, 21 May 2021 14:27:27 +0200
Subject: [PATCH 4/6] Moves build to Xcode 12

---
 .travis.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.travis.yml b/.travis.yml
index ef42d21..b96a6ea 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -3,7 +3,7 @@ branches:
     - master
 language: objective-c
 os: osx
-osx_image: xcode10
+osx_image: xcode12
 cache:
   - cocoapods
 env:
-- 
GitLab


From df0c47add16f6cb7e81fd28aa59518c607a9dd4e Mon Sep 17 00:00:00 2001
From: Darren Black <drdaz7@gmail.com>
Date: Fri, 21 May 2021 15:01:32 +0200
Subject: [PATCH 5/6] Dropping back to Xcode 10

---
 .travis.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.travis.yml b/.travis.yml
index b96a6ea..ef42d21 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -3,7 +3,7 @@ branches:
     - master
 language: objective-c
 os: osx
-osx_image: xcode12
+osx_image: xcode10
 cache:
   - cocoapods
 env:
-- 
GitLab


From 2affacab682ed4eb3f404392f8e2338bc16e58f4 Mon Sep 17 00:00:00 2001
From: Darren Black <drdaz7@gmail.com>
Date: Wed, 26 May 2021 15:07:17 +0200
Subject: [PATCH 6/6] Exposes public headers

---
 Package.swift | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/Package.swift b/Package.swift
index 667092d..d124b5c 100644
--- a/Package.swift
+++ b/Package.swift
@@ -17,7 +17,8 @@ let package = Package(
             name: "Bolts",
             dependencies: [.target(name: "Bolts-iOS")],
             path: "Bolts",
-            exclude: ["Info.plist"]
+            exclude: ["Info.plist"],
+            publicHeadersPath: ""
         ),
         .target(
             name: "Bolts-iOS",
-- 
GitLab