diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml
new file mode 100644
index 0000000..5eec115
--- /dev/null
+++ b/.github/workflows/checks.yml
@@ -0,0 +1,33 @@
+name: Build
+
+on:
+  push:
+    branches: [ master ]
+  pull_request:
+    branches: '*'
+
+env:
+  DEVELOPER_DIR: /Applications/Xcode_12.4.app/Contents/Developer
+
+jobs:
+  iOS:
+    runs-on: macos-latest
+    steps:
+    - name: Checkout
+      uses: actions/checkout@v2
+    - name: Build
+      run: xcodebuild -scheme "Rswift-iOS"
+  tvOS:
+    runs-on: macos-latest
+    steps:
+    - name: Checkout
+      uses: actions/checkout@v2
+    - name: Build
+      run: xcodebuild -scheme "Rswift-tvOS"
+  watchOS:
+    runs-on: macos-latest
+    steps:
+    - name: Checkout
+      uses: actions/checkout@v2
+    - name: Build
+      run: xcodebuild -scheme "Rswift-watchOS"
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
new file mode 100644
index 0000000..ebf96c1
--- /dev/null
+++ b/.github/workflows/release.yml
@@ -0,0 +1,22 @@
+name: Release
+
+on:
+  release:
+    types: created
+
+env:
+  DEVELOPER_DIR: /Applications/Xcode_12.4.app/Contents/Developer
+
+jobs:
+  publish:
+    runs-on: macos-latest
+    steps:
+    - name: Checkout
+      uses: actions/checkout@v2
+    - name: Publish to Cocoapods
+      run: |
+        export POD_VERSION=$(echo $TAG_NAME | cut -c2-)
+        pod trunk push
+      env:
+        TAG_NAME: ${{ github.event.release.tag_name }}
+        COCOAPODS_TRUNK_TOKEN: ${{ secrets.COCOAPODS_TRUNK_TOKEN }}
diff --git a/.gitignore b/.gitignore
index 3b8e2bf..53a07cc 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,10 @@
 .DS_Store
 xcuserdata
 *.xccheckout
+fastlane/README.md
+fastlane/report.xml
+fastlane/test_output
+fastlane/settoken.sh
+/build
+Carthage/Build
+.swiftpm
\ No newline at end of file
diff --git a/Library/Core/ColorResource.swift b/Library/Core/ColorResource.swift
new file mode 100644
index 0000000..0f67b4e
--- /dev/null
+++ b/Library/Core/ColorResource.swift
@@ -0,0 +1,33 @@
+//
+//  ColorResource.swift
+//  R.swift.Library
+//
+//  Created by Tom Lokhorst on 2016-03-13.
+//  From: https://github.com/mac-cain13/R.swift.Library
+//  License: MIT License
+//
+
+import Foundation
+
+public protocol ColorResourceType {
+
+  /// Bundle this color is in
+  var bundle: Bundle { get }
+
+  /// Name of the color
+  var name: String { get }
+}
+
+public struct ColorResource: ColorResourceType {
+
+  /// Bundle this color is in
+  public let bundle: Bundle
+
+  /// Name of the color
+  public let name: String
+
+  public init(bundle: Bundle, name: String) {
+    self.bundle = bundle
+    self.name = name
+  }
+}
diff --git a/Library/Core/FileResource.swift b/Library/Core/FileResource.swift
index 03ccf7e..093ee0b 100644
--- a/Library/Core/FileResource.swift
+++ b/Library/Core/FileResource.swift
@@ -1,17 +1,18 @@
 //
 //  FileResource.swift
-//  Pods
+//  R.swift.Library
 //
 //  Created by Mathijs Kadijk on 06-01-16.
-//
+//  From: https://github.com/mac-cain13/R.swift.Library
+//  License: MIT License
 //
 
 import Foundation
 
 public protocol FileResourceType {
 
-  /// Bundle this file is in or nil for main bundle
-  var bundle: NSBundle? { get }
+  /// Bundle this file is in
+  var bundle: Bundle { get }
 
   /// Name of the file file on disk
   var name: String { get }
@@ -20,17 +21,42 @@ public protocol FileResourceType {
   var pathExtension: String { get }
 }
 
+public extension FileResourceType {
+  /// Name of the file on disk with the pathExtension
+  var fullName: String {
+    return [name, pathExtension].joined(separator: ".")
+  }
+
+  /**
+   Returns the full pathname for this resource.
+
+   - returns: The full pathname for this resource or nil if the file could not be located.
+   */
+  func path() -> String? {
+    return bundle.path(forResource: self)
+  }
+
+  /**
+   Returns the file URL for this resource.
+
+   - returns: The file URL for this resource or nil if the file could not be located.
+   */
+  func url() -> URL? {
+    return bundle.url(forResource: self)
+  }
+}
+
 public struct FileResource: FileResourceType {
-  /// Bundle this file is in or nil for main bundle
-  public let bundle: NSBundle?
+  /// Bundle this file is in
+  public let bundle: Bundle
 
-  /// Name of the file file on disk
+  /// Name of the file on disk, without the pathExtension
   public let name: String
 
   /// Extension of the file on disk
   public let pathExtension: String
 
-  public init(bundle: NSBundle?, name: String, pathExtension: String) {
+  public init(bundle: Bundle, name: String, pathExtension: String) {
     self.bundle = bundle
     self.name = name
     self.pathExtension = pathExtension
diff --git a/Library/Core/FontResource.swift b/Library/Core/FontResource.swift
index 7a7fbae..6ce96a7 100644
--- a/Library/Core/FontResource.swift
+++ b/Library/Core/FontResource.swift
@@ -3,7 +3,8 @@
 //  R.swift.Library
 //
 //  Created by Mathijs Kadijk on 06-01-16.
-//  Copyright © 2016 Mathijs Kadijk. All rights reserved.
+//  From: https://github.com/mac-cain13/R.swift.Library
+//  License: MIT License
 //
 
 import Foundation
diff --git a/Library/Core/Identifier.swift b/Library/Core/Identifier.swift
index 0da396a..17e7365 100644
--- a/Library/Core/Identifier.swift
+++ b/Library/Core/Identifier.swift
@@ -3,7 +3,8 @@
 //  R.swift Library
 //
 //  Created by Mathijs Kadijk on 06-12-15.
-//  Copyright © 2015 Mathijs Kadijk. All rights reserved.
+//  From: https://github.com/mac-cain13/R.swift.Library
+//  License: MIT License
 //
 
 import Foundation
diff --git a/Library/Core/ImageResource.swift b/Library/Core/ImageResource.swift
index 6febc7c..6fd3d8a 100644
--- a/Library/Core/ImageResource.swift
+++ b/Library/Core/ImageResource.swift
@@ -3,15 +3,16 @@
 //  R.swift.Library
 //
 //  Created by Mathijs Kadijk on 11-01-16.
-//  Copyright © 2016 Mathijs Kadijk. All rights reserved.
+//  From: https://github.com/mac-cain13/R.swift.Library
+//  License: MIT License
 //
 
 import Foundation
 
 public protocol ImageResourceType {
 
-  /// Bundle this image is in or nil for main bundle
-  var bundle: NSBundle? { get }
+  /// Bundle this image is in
+  var bundle: Bundle { get }
 
   /// Name of the image
   var name: String { get }
@@ -19,13 +20,13 @@ public protocol ImageResourceType {
 
 public struct ImageResource: ImageResourceType {
 
-  /// Bundle this image is in or nil for main bundle
-  public let bundle: NSBundle?
+  /// Bundle this image is in
+  public let bundle: Bundle
 
   /// Name of the image
   public let name: String
 
-  public init(bundle: NSBundle?, name: String) {
+  public init(bundle: Bundle, name: String) {
     self.bundle = bundle
     self.name = name
   }
diff --git a/Library/Core/NibResource.swift b/Library/Core/NibResource.swift
index 82de154..3a5e904 100644
--- a/Library/Core/NibResource.swift
+++ b/Library/Core/NibResource.swift
@@ -3,7 +3,8 @@
 //  R.swift Library
 //
 //  Created by Mathijs Kadijk on 06-12-15.
-//  Copyright © 2015 Mathijs Kadijk. All rights reserved.
+//  From: https://github.com/mac-cain13/R.swift.Library
+//  License: MIT License
 //
 
 import Foundation
@@ -12,7 +13,7 @@ import Foundation
 public protocol NibResourceType {
 
   /// Bundle this nib is in or nil for main bundle
-  var bundle: NSBundle? { get }
+  var bundle: Bundle { get }
 
   /// Name of the nib file on disk
   var name: String { get }
diff --git a/Library/Core/ReuseIdentifierProtocol.swift b/Library/Core/ReuseIdentifierProtocol.swift
index f86a1cc..9637e01 100644
--- a/Library/Core/ReuseIdentifierProtocol.swift
+++ b/Library/Core/ReuseIdentifierProtocol.swift
@@ -3,7 +3,8 @@
 //  R.swift Library
 //
 //  Created by Mathijs Kadijk on 06-12-15.
-//  Copyright © 2015 Mathijs Kadijk. All rights reserved.
+//  From: https://github.com/mac-cain13/R.swift.Library
+//  License: MIT License
 //
 
 import Foundation
@@ -11,7 +12,7 @@ import Foundation
 /// Reuse identifier protocol
 public protocol ReuseIdentifierType: IdentifierType {
   /// Type of this reuseable
-  typealias ReusableType
+  associatedtype ReusableType
 }
 
 /// Reuse identifier
diff --git a/Library/Core/StoryboardResource.swift b/Library/Core/StoryboardResource.swift
index fceea9d..46a0e35 100644
--- a/Library/Core/StoryboardResource.swift
+++ b/Library/Core/StoryboardResource.swift
@@ -3,16 +3,16 @@
 //  R.swift.Library
 //
 //  Created by Mathijs Kadijk on 07-01-16.
-//  Copyright © 2016 Mathijs Kadijk. All rights reserved.
+//  From: https://github.com/mac-cain13/R.swift.Library
+//  License: MIT License
 //
 
 import Foundation
-import UIKit
 
 public protocol StoryboardResourceType {
 
-  /// Bundle this storyboard is in or nil for main bundle
-  var bundle: NSBundle? { get }
+  /// Bundle this storyboard is in
+  var bundle: Bundle { get }
 
   /// Name of the storyboard file on disk
   var name: String { get }
@@ -21,5 +21,5 @@ public protocol StoryboardResourceType {
 public protocol StoryboardResourceWithInitialControllerType: StoryboardResourceType {
 
   /// Type of the inital controller
-  typealias InitialController
+  associatedtype InitialController
 }
diff --git a/Library/Core/StoryboardSegueIdentifierProtocol.swift b/Library/Core/StoryboardSegueIdentifierProtocol.swift
index 6ee3322..9b51797 100644
--- a/Library/Core/StoryboardSegueIdentifierProtocol.swift
+++ b/Library/Core/StoryboardSegueIdentifierProtocol.swift
@@ -3,7 +3,8 @@
 //  R.swift Library
 //
 //  Created by Mathijs Kadijk on 06-12-15.
-//  Copyright © 2015 Mathijs Kadijk. All rights reserved.
+//  From: https://github.com/mac-cain13/R.swift.Library
+//  License: MIT License
 //
 
 import Foundation
@@ -11,13 +12,13 @@ import Foundation
 /// Segue identifier protocol
 public protocol StoryboardSegueIdentifierType: IdentifierType {
   /// Type of the segue itself
-  typealias SegueType
+  associatedtype SegueType
 
   /// Type of the source view controller
-  typealias SourceType
+  associatedtype SourceType
 
   /// Type of the destination view controller
-  typealias DestinationType
+  associatedtype DestinationType
 }
 
 /// Segue identifier
@@ -42,6 +43,13 @@ public struct StoryboardSegueIdentifier<Segue, Source, Destination>: StoryboardS
   public init(identifier: String) {
     self.identifier = identifier
   }
+
+  /// Create a new StoryboardSegue based on the identifier and source view controller
+  public func storyboardSegue(withSource source: Source)
+    -> StoryboardSegue<Segue, Source, Destination>
+  {
+    return StoryboardSegue(identifier: self, source: source)
+  }
 }
 
 /// Typed segue information
@@ -56,7 +64,7 @@ public struct TypedStoryboardSegueInfo<Segue, Source, Destination>: StoryboardSe
   public typealias DestinationType = Destination
 
   /// Segue destination view controller
-  public let destinationViewController: Destination
+  public let destination: Destination
 
   /// Segue identifier
   public let identifier: String
@@ -65,5 +73,24 @@ public struct TypedStoryboardSegueInfo<Segue, Source, Destination>: StoryboardSe
   public let segue: Segue
 
   /// Segue source view controller
-  public let sourceViewController: Source
+  public let source: Source
+}
+
+/// Segue with identifier and source view controller
+public struct StoryboardSegue<Segue, Source, Destination> {
+  /// Identifier of this segue
+  public let identifier: StoryboardSegueIdentifier<Segue, Source, Destination>
+
+  /// Segue source view controller
+  public let source: Source
+
+  /**
+   Create a new segue based on the identifier and source view controller
+
+   - returns: A new StoryboardSegue
+   */
+  public init(identifier: StoryboardSegueIdentifier<Segue, Source, Destination>, source: Source) {
+    self.identifier = identifier
+    self.source = source
+  }
 }
diff --git a/Library/Core/StoryboardViewControllerResource.swift b/Library/Core/StoryboardViewControllerResource.swift
new file mode 100644
index 0000000..4a29d91
--- /dev/null
+++ b/Library/Core/StoryboardViewControllerResource.swift
@@ -0,0 +1,25 @@
+//
+//  StoryboardViewControllerResource.swift
+//  R.swift.Library
+//
+//  Created by Mathijs Kadijk on 13-03-16.
+//  From: https://github.com/mac-cain13/R.swift.Library
+//  License: MIT License
+//
+
+import Foundation
+
+public protocol StoryboardViewControllerResourceType: IdentifierType {
+  associatedtype ViewControllerType
+}
+
+public struct StoryboardViewControllerResource<ViewController>: StoryboardViewControllerResourceType {
+  public typealias ViewControllerType = ViewController
+
+  /// Storyboard identifier of this view controller
+  public let identifier: String
+
+  public init(identifier: String) {
+    self.identifier = identifier
+  }
+}
diff --git a/Library/Core/StringResource.swift b/Library/Core/StringResource.swift
new file mode 100644
index 0000000..56e1193
--- /dev/null
+++ b/Library/Core/StringResource.swift
@@ -0,0 +1,54 @@
+//
+//  StringResource.swift
+//  R.swift.Library
+//
+//  Created by Tom Lokhorst on 2016-04-23.
+//  From: https://github.com/mac-cain13/R.swift.Library
+//  License: MIT License
+//
+
+import Foundation
+
+public protocol StringResourceType {
+
+  /// Key for the string
+  var key: String { get }
+
+  /// File in containing the string
+  var tableName: String { get }
+
+  /// Bundle this string is in
+  var bundle: Bundle { get }
+
+  /// Locales of the a localizable string
+  var locales: [String] { get }
+  
+  /// Comment directly before and/or after the string, if any
+  var comment: String? { get }
+}
+
+public struct StringResource: StringResourceType {
+
+  /// Key for the string
+  public let key: String
+
+  /// File in containing the string
+  public let tableName: String
+
+  /// Bundle this string is in
+  public let bundle: Bundle
+
+  /// Locales of the a localizable string
+  public let locales: [String]
+  
+  /// Comment directly before and/or after the string, if any
+  public let comment: String?
+
+  public init(key: String, tableName: String, bundle: Bundle, locales: [String], comment: String?) {
+    self.key = key
+    self.tableName = tableName
+    self.bundle = bundle
+    self.locales = locales
+    self.comment = comment
+  }
+}
diff --git a/Library/Core/Validatable.swift b/Library/Core/Validatable.swift
index 764d486..f965a6c 100644
--- a/Library/Core/Validatable.swift
+++ b/Library/Core/Validatable.swift
@@ -3,13 +3,14 @@
 //  R.swift.Library
 //
 //  Created by Mathijs Kadijk on 17-12-15.
-//  Copyright © 2015 Mathijs Kadijk. All rights reserved.
+//  From: https://github.com/mac-cain13/R.swift.Library
+//  License: MIT License
 //
 
 import Foundation
 
 /// Error thrown during validation
-public struct ValidationError: ErrorType, CustomStringConvertible {
+public struct ValidationError: Error, CustomStringConvertible {
   /// Human readable description
   public let description: String
 
@@ -20,28 +21,9 @@ public struct ValidationError: ErrorType, CustomStringConvertible {
 
 public protocol Validatable {
   /**
-   Validates this entity and throws if it encounters a invalid situation, a validatable should also validate it sub-validatables if it has any.
+   Validates this entity and throws if it encounters an invalid situation, a validatable should also validate it sub-validatables if it has any.
 
    - throws: If there the configuration error a ValidationError is thrown
    */
   static func validate() throws
 }
-
-extension Validatable {
-  /**
-   Validates this entity and asserts if it encounters a invalid situation, a validatable should also validate it sub-validatables if it has any. In -O builds (the default for Xcode's Release configuration), validation is not evaluated, and there are no effects.
-   */
-  public static func assertValid() {
-    assert( theRealAssert() )
-  }
-
-  private static func theRealAssert() -> Bool {
-    do {
-      try validate()
-    } catch {
-      assertionFailure("Validation of \(self.dynamicType) failed with error: \(error)")
-    }
-
-    return true
-  }
-}
diff --git a/Library/Foundation/NSBundle+FileResource.swift b/Library/Foundation/Bundle+FileResource.swift
similarity index 55%
rename from Library/Foundation/NSBundle+FileResource.swift
rename to Library/Foundation/Bundle+FileResource.swift
index d5a8598..d632c8d 100644
--- a/Library/Foundation/NSBundle+FileResource.swift
+++ b/Library/Foundation/Bundle+FileResource.swift
@@ -1,14 +1,15 @@
 //
-//  NSBundle+FileResource.swift
+//  Bundle+FileResource.swift
 //  R.swift.Library
 //
 //  Created by Mathijs Kadijk on 10-01-16.
-//  Copyright © 2016 Mathijs Kadijk. All rights reserved.
+//  From: https://github.com/mac-cain13/R.swift.Library
+//  License: MIT License
 //
 
 import Foundation
 
-public extension NSBundle {
+public extension Bundle {
   /**
    Returns the file URL for the given resource (R.file.*).
 
@@ -16,8 +17,8 @@ public extension NSBundle {
 
    - returns: The file URL for the resource file (R.file.*) or nil if the file could not be located.
    */
-  public func URLForResource(resource: FileResourceType) -> NSURL? {
-    return URLForResource(resource.name, withExtension: resource.pathExtension, subdirectory: nil, localization: nil)
+  func url(forResource resource: FileResourceType) -> URL? {
+    return url(forResource: resource.name, withExtension: resource.pathExtension)
   }
 
   /**
@@ -27,7 +28,7 @@ public extension NSBundle {
 
    - returns: The full pathname for the resource file (R.file.*) or nil if the file could not be located.
    */
-  public func pathForResource(resource: FileResourceType) -> String? {
-    return pathForResource(resource.name, ofType: resource.pathExtension, inDirectory: nil, forLocalization: nil)
+  func path(forResource resource: FileResourceType) -> String? {
+    return path(forResource: resource.name, ofType: resource.pathExtension)
   }
 }
diff --git a/Library/Foundation/Data+FileResource.swift b/Library/Foundation/Data+FileResource.swift
new file mode 100644
index 0000000..36a0a36
--- /dev/null
+++ b/Library/Foundation/Data+FileResource.swift
@@ -0,0 +1,27 @@
+//
+//  Data+FileResource.swift
+//  R.swift.Library
+//
+//  Created by Tom Lokhorst on 2016-03-11.
+//  From: https://github.com/mac-cain13/R.swift.Library
+//  License: MIT License
+//
+
+import Foundation
+
+public struct NoUrlForResourceError: Error {}
+
+public extension Data {
+
+  /**
+   Creates and returns NSData with the contents of the specified file resource (R.file.*).
+
+   - parameter resource: The file resource (R.file.*)
+
+   - returns: A NSData object with the contents of the specified file.
+   */
+  init(resource: FileResourceType) throws {
+    guard let url = resource.url() else { throw NoUrlForResourceError() }
+    try self.init(contentsOf: url)
+  }
+}
diff --git a/Library/Rswift.h b/Library/Rswift.h
index 9b7482f..b77027e 100644
--- a/Library/Rswift.h
+++ b/Library/Rswift.h
@@ -3,7 +3,8 @@
 //  Rswift
 //
 //  Created by Mathijs Kadijk on 04-12-15.
-//  Copyright © 2015 Mathijs Kadijk. All rights reserved.
+//  From: https://github.com/mac-cain13/R.swift.Library
+//  License: MIT License
 //
 
 #import <UIKit/UIKit.h>
diff --git a/Library/UIKit/NibResource+UIKit.swift b/Library/UIKit/NibResource+UIKit.swift
index e6e22e7..2875cc5 100644
--- a/Library/UIKit/NibResource+UIKit.swift
+++ b/Library/UIKit/NibResource+UIKit.swift
@@ -3,9 +3,11 @@
 //  R.swift.Library
 //
 //  Created by Mathijs Kadijk on 06-01-16.
-//  Copyright © 2016 Mathijs Kadijk. All rights reserved.
+//  From: https://github.com/mac-cain13/R.swift.Library
+//  License: MIT License
 //
 
+#if !os(watchOS)
 import Foundation
 import UIKit
 
@@ -18,7 +20,8 @@ public extension NibResourceType {
 
    - returns: An array containing the top-level objects from the NIB
    */
-  public func instantiateWithOwner(ownerOrNil: AnyObject?, options optionsOrNil: [NSObject : AnyObject]? = nil) -> [AnyObject] {
-    return UINib(resource: self).instantiateWithOwner(ownerOrNil, options: optionsOrNil)
+  func instantiate(withOwner ownerOrNil: Any?, options optionsOrNil: [UINib.OptionsKey : Any]? = [:]) -> [Any] {
+    return UINib(resource: self).instantiate(withOwner: ownerOrNil, options: optionsOrNil)
   }
 }
+#endif
diff --git a/Library/UIKit/StoryboardResourceWithInitialController+UIKit.swift b/Library/UIKit/StoryboardResourceWithInitialController+UIKit.swift
index c6e7cfa..4ba1902 100644
--- a/Library/UIKit/StoryboardResourceWithInitialController+UIKit.swift
+++ b/Library/UIKit/StoryboardResourceWithInitialController+UIKit.swift
@@ -3,9 +3,11 @@
 //  R.swift.Library
 //
 //  Created by Mathijs Kadijk on 07-01-16.
-//  Copyright © 2016 Mathijs Kadijk. All rights reserved.
+//  From: https://github.com/mac-cain13/R.swift.Library
+//  License: MIT License
 //
 
+#if !os(watchOS)
 import Foundation
 import UIKit
 
@@ -15,7 +17,8 @@ public extension StoryboardResourceWithInitialControllerType {
 
    - returns: The initial view controller in the storyboard.
    */
-  public func initialViewController() -> InitialController? {
+  func instantiateInitialViewController() -> InitialController? {
     return UIStoryboard(resource: self).instantiateInitialViewController() as? InitialController
   }
 }
+#endif
diff --git a/Library/UIKit/TypedStoryboardSegueInfo+UIStoryboardSegue.swift b/Library/UIKit/TypedStoryboardSegueInfo+UIStoryboardSegue.swift
index aa5104b..894c8c2 100644
--- a/Library/UIKit/TypedStoryboardSegueInfo+UIStoryboardSegue.swift
+++ b/Library/UIKit/TypedStoryboardSegueInfo+UIStoryboardSegue.swift
@@ -3,9 +3,11 @@
 //  R.swift Library
 //
 //  Created by Mathijs Kadijk on 06-12-15.
-//  Copyright © 2015 Mathijs Kadijk. All rights reserved.
+//  From: https://github.com/mac-cain13/R.swift.Library
+//  License: MIT License
 //
 
+#if !os(watchOS)
 import Foundation
 import UIKit
 
@@ -15,19 +17,21 @@ extension TypedStoryboardSegueInfo {
    
    - returns: A newly initialized TypedStoryboardSegueInfo object or nil.
   */
-  public init?<SegueIdentifier: StoryboardSegueIdentifierType where SegueIdentifier.SegueType == Segue, SegueIdentifier.SourceType == Source, SegueIdentifier.DestinationType == Destination>(segueIdentifier: SegueIdentifier, segue: UIStoryboardSegue) {
+  public init?<SegueIdentifier: StoryboardSegueIdentifierType>(segueIdentifier: SegueIdentifier, segue: UIStoryboardSegue)
+    where SegueIdentifier.SegueType == Segue, SegueIdentifier.SourceType == Source, SegueIdentifier.DestinationType == Destination
+  {
     guard let identifier = segue.identifier,
-      sourceViewController = segue.sourceViewController as? SegueIdentifier.SourceType,
-      destinationViewController = segue.destinationViewController as? SegueIdentifier.DestinationType,
-      segue = segue as? SegueIdentifier.SegueType
-      where identifier == segueIdentifier.identifier
-      else {
-        return nil
+      let source = segue.source as? SegueIdentifier.SourceType,
+      let destination = segue.destination as? SegueIdentifier.DestinationType,
+      let segue = segue as? SegueIdentifier.SegueType, identifier == segueIdentifier.identifier
+    else {
+      return nil
     }
 
     self.segue = segue
     self.identifier = identifier
-    self.sourceViewController = sourceViewController
-    self.destinationViewController = destinationViewController
+    self.source = source
+    self.destination = destination
   }
 }
+#endif
diff --git a/Library/UIKit/UICollectionView+ReuseIdentifierProtocol.swift b/Library/UIKit/UICollectionView+ReuseIdentifierProtocol.swift
index 9362e0a..ebac685 100644
--- a/Library/UIKit/UICollectionView+ReuseIdentifierProtocol.swift
+++ b/Library/UIKit/UICollectionView+ReuseIdentifierProtocol.swift
@@ -3,9 +3,11 @@
 //  R.swift Library
 //
 //  Created by Mathijs Kadijk on 06-12-15.
-//  Copyright © 2015 Mathijs Kadijk. All rights reserved.
+//  From: https://github.com/mac-cain13/R.swift.Library
+//  License: MIT License
 //
 
+#if !os(watchOS)
 import Foundation
 import UIKit
 
@@ -18,8 +20,10 @@ public extension UICollectionView {
    
    - returns: A subclass of UICollectionReusableView or nil if the cast fails.
   */
-  public func dequeueReusableCellWithReuseIdentifier<Identifier: ReuseIdentifierType where Identifier.ReusableType: UICollectionReusableView>(identifier: Identifier, forIndexPath indexPath: NSIndexPath) -> Identifier.ReusableType? {
-    return dequeueReusableCellWithReuseIdentifier(identifier.identifier, forIndexPath: indexPath) as? Identifier.ReusableType
+  func dequeueReusableCell<Identifier: ReuseIdentifierType>(withReuseIdentifier identifier: Identifier, for indexPath: IndexPath) -> Identifier.ReusableType?
+    where Identifier.ReusableType: UICollectionReusableView
+  {
+    return dequeueReusableCell(withReuseIdentifier: identifier.identifier, for: indexPath) as? Identifier.ReusableType
   }
 
   /**
@@ -31,17 +35,10 @@ public extension UICollectionView {
    
    - returns: A subclass of UICollectionReusableView or nil if the cast fails.
   */
-  public func dequeueReusableSupplementaryViewOfKind<Identifier: ReuseIdentifierType where Identifier.ReusableType: UICollectionReusableView>(elementKind: String, withReuseIdentifier identifier: Identifier, forIndexPath indexPath: NSIndexPath) -> Identifier.ReusableType? {
-    return dequeueReusableSupplementaryViewOfKind(elementKind, withReuseIdentifier: identifier.identifier, forIndexPath: indexPath) as? Identifier.ReusableType
-  }
-
-  /**
-   Register a serie of R.nib.* for use in creating new collection view cells.
-
-   - parameter nibResources: An array of nib resources (R.nib.*) each containing a object of type UICollectionViewCell that has a reuse identifier
-   */
-  public func registerNibs<Resource: NibResourceType where Resource: ReuseIdentifierType, Resource.ReusableType: UICollectionViewCell>(nibResources: [Resource]) {
-    nibResources.forEach(registerNib)
+  func dequeueReusableSupplementaryView<Identifier: ReuseIdentifierType>(ofKind elementKind: String, withReuseIdentifier identifier: Identifier, for indexPath: IndexPath) -> Identifier.ReusableType?
+    where Identifier.ReusableType: UICollectionReusableView
+  {
+    return dequeueReusableSupplementaryView(ofKind: elementKind, withReuseIdentifier: identifier.identifier, for: indexPath) as? Identifier.ReusableType
   }
 
   /**
@@ -49,17 +46,10 @@ public extension UICollectionView {
 
    - parameter nibResource: A nib resource (R.nib.*) containing a object of type UICollectionViewCell that has a reuse identifier
    */
-  public func registerNib<Resource: NibResourceType where Resource: ReuseIdentifierType, Resource.ReusableType: UICollectionViewCell>(nibResource: Resource) {
-    registerNib(UINib(resource: nibResource), forCellWithReuseIdentifier: nibResource.identifier)
-  }
-
-  /**
-   Register a serie of R.nib.* for use in creating supplementary views for the collection view.
-
-   - parameter nibResources: An array of nib resources (R.nib.*) each containing a object of type UICollectionReusableView. that has a reuse identifier
-   */
-  public func registerNibs<Resource: NibResourceType where Resource: ReuseIdentifierType, Resource.ReusableType: UICollectionReusableView>(nibResources: [Resource], forSupplementaryViewOfKind kind: String) {
-    nibResources.forEach { self.registerNib($0, forSupplementaryViewOfKind: kind) }
+  func register<Resource: NibResourceType & ReuseIdentifierType>(_ nibResource: Resource)
+    where Resource.ReusableType: UICollectionViewCell
+  {
+    register(UINib(resource: nibResource), forCellWithReuseIdentifier: nibResource.identifier)
   }
 
   /**
@@ -67,7 +57,10 @@ public extension UICollectionView {
 
    - parameter nibResource: A nib resource (R.nib.*) containing a object of type UICollectionReusableView. that has a reuse identifier
    */
-  public func registerNib<Resource: NibResourceType where Resource: ReuseIdentifierType, Resource.ReusableType: UICollectionReusableView>(nibResource: Resource, forSupplementaryViewOfKind kind: String) {
-    registerNib(UINib(resource: nibResource), forSupplementaryViewOfKind: kind, withReuseIdentifier: nibResource.identifier)
+  func register<Resource: NibResourceType & ReuseIdentifierType>(_ nibResource: Resource, forSupplementaryViewOfKind kind: String)
+    where Resource.ReusableType: UICollectionReusableView
+  {
+    register(UINib(resource: nibResource), forSupplementaryViewOfKind: kind, withReuseIdentifier: nibResource.identifier)
   }
 }
+#endif
diff --git a/Library/UIKit/UIColor+ColorResource.swift b/Library/UIKit/UIColor+ColorResource.swift
new file mode 100644
index 0000000..6ee764d
--- /dev/null
+++ b/Library/UIKit/UIColor+ColorResource.swift
@@ -0,0 +1,43 @@
+//
+//  UIColor+ColorResource.swift
+//  R.swift.Library
+//
+//  Created by Tom Lokhorst on 2017-06-06.
+//  From: https://github.com/mac-cain13/R.swift.Library
+//  License: MIT License
+//
+
+import UIKit
+
+@available(iOS 11.0, *)
+@available(tvOS 11.0, *)
+public extension UIColor {
+
+  #if os(iOS) || os(tvOS)
+  /**
+   Returns the color from this resource (R.color.*) that is compatible with the trait collection.
+
+   - parameter resource: The resource you want the image of (R.color.*)
+   - parameter traitCollection: Traits that describe the desired color to retrieve, pass nil to use traits that describe the main screen.
+
+   - returns: A color that exactly or best matches the desired traits with the given resource (R.color.*), or nil if no suitable color was found.
+   */
+  convenience init?(resource: ColorResourceType, compatibleWith traitCollection: UITraitCollection? = nil) {
+    self.init(named: resource.name, in: resource.bundle, compatibleWith: traitCollection)
+  }
+  #endif
+
+  #if os(watchOS)
+  /**
+   Returns the color from this resource (R.color.*) that is compatible with the trait collection.
+
+   - parameter resource: The resource you want the image of (R.color.*)
+
+   - returns: A color that exactly or best matches the desired traits with the given resource (R.color.*), or nil if no suitable color was found.
+   */
+  @available(watchOSApplicationExtension 4.0, *)
+  convenience init?(resource: ColorResourceType) {
+    self.init(named: resource.name)
+  }
+  #endif
+}
diff --git a/Library/UIKit/UIFont+FontResource.swift b/Library/UIKit/UIFont+FontResource.swift
index c644c0b..cadc6c9 100644
--- a/Library/UIKit/UIFont+FontResource.swift
+++ b/Library/UIKit/UIFont+FontResource.swift
@@ -3,7 +3,8 @@
 //  R.swift.Library
 //
 //  Created by Mathijs Kadijk on 06-01-16.
-//  Copyright © 2016 Mathijs Kadijk. All rights reserved.
+//  From: https://github.com/mac-cain13/R.swift.Library
+//  License: MIT License
 //
 
 import Foundation
@@ -18,7 +19,7 @@ public extension UIFont {
 
    - returns: A font object of the specified font resource and size.
    */
-  public convenience init?(resource: FontResourceType, size: CGFloat) {
+  convenience init?(resource: FontResourceType, size: CGFloat) {
     self.init(name: resource.fontName, size: size)
   }
 }
diff --git a/Library/UIKit/UIImage+ImageResource.swift b/Library/UIKit/UIImage+ImageResource.swift
index cac64dc..c764814 100644
--- a/Library/UIKit/UIImage+ImageResource.swift
+++ b/Library/UIKit/UIImage+ImageResource.swift
@@ -3,12 +3,15 @@
 //  R.swift.Library
 //
 //  Created by Mathijs Kadijk on 11-01-16.
-//  Copyright © 2016 Mathijs Kadijk. All rights reserved.
+//  From: https://github.com/mac-cain13/R.swift.Library
+//  License: MIT License
 //
 
 import UIKit
 
 public extension UIImage {
+
+  #if os(iOS) || os(tvOS)
   /**
    Returns the image from this resource (R.image.*) that is compatible with the trait collection.
 
@@ -17,7 +20,21 @@ public extension UIImage {
 
    - returns: An image that exactly or best matches the desired traits with the given resource (R.image.*), or nil if no suitable image was found.
   */
-  public convenience init?(resource: ImageResourceType, compatibleWithTraitCollection traitCollection: UITraitCollection? = nil) {
-    self.init(named: resource.name, inBundle: resource.bundle, compatibleWithTraitCollection: traitCollection)
+  convenience init?(resource: ImageResourceType, compatibleWith traitCollection: UITraitCollection? = nil) {
+    self.init(named: resource.name, in: resource.bundle, compatibleWith: traitCollection)
+  }
+  #endif
+
+  #if os(watchOS)
+  /**
+   Returns the image from this resource (R.image.*) that is compatible with the trait collection.
+
+   - parameter resource: The resource you want the image of (R.image.*)
+
+   - returns: An image that exactly or best matches the desired traits with the given resource (R.image.*), or nil if no suitable image was found.
+   */
+  convenience init?(resource: ImageResourceType) {
+    self.init(named: resource.name)
   }
+  #endif
 }
diff --git a/Library/UIKit/UINib+NibResource.swift b/Library/UIKit/UINib+NibResource.swift
index 3e73baa..8aaa0fd 100644
--- a/Library/UIKit/UINib+NibResource.swift
+++ b/Library/UIKit/UINib+NibResource.swift
@@ -3,9 +3,11 @@
 //  R.swift.Library
 //
 //  Created by Mathijs Kadijk on 08-01-16.
-//  Copyright © 2016 Mathijs Kadijk. All rights reserved.
+//  From: https://github.com/mac-cain13/R.swift.Library
+//  License: MIT License
 //
 
+#if !os(watchOS)
 import UIKit
 
 public extension UINib {
@@ -16,7 +18,8 @@ public extension UINib {
 
    - returns: The initialized UINib object. An exception is thrown if there were errors during initialization or the nib file could not be located.
    */
-  public convenience init(resource: NibResourceType) {
+  convenience init(resource: NibResourceType) {
     self.init(nibName: resource.name, bundle: resource.bundle)
   }
 }
+#endif
diff --git a/Library/UIKit/UIStoryboard+StoryboardResource.swift b/Library/UIKit/UIStoryboard+StoryboardResource.swift
index 8252eea..1ed8015 100644
--- a/Library/UIKit/UIStoryboard+StoryboardResource.swift
+++ b/Library/UIKit/UIStoryboard+StoryboardResource.swift
@@ -3,9 +3,11 @@
 //  R.swift.Library
 //
 //  Created by Mathijs Kadijk on 07-01-16.
-//  Copyright © 2016 Mathijs Kadijk. All rights reserved.
+//  From: https://github.com/mac-cain13/R.swift.Library
+//  License: MIT License
 //
 
+#if !os(watchOS)
 import UIKit
 
 public extension UIStoryboard {
@@ -16,7 +18,8 @@ public extension UIStoryboard {
 
    - returns: A storyboard object for the specified file. If no storyboard resource file matching name exists, an exception is thrown with description: `Could not find a storyboard named 'XXXXXX' in bundle....`
    */
-  public convenience init(resource: StoryboardResourceType) {
+  convenience init(resource: StoryboardResourceType) {
     self.init(name: resource.name, bundle: resource.bundle)
   }
 }
+#endif
diff --git a/Library/UIKit/UIStoryboard+StoryboardViewControllerResource.swift b/Library/UIKit/UIStoryboard+StoryboardViewControllerResource.swift
new file mode 100644
index 0000000..75c61f0
--- /dev/null
+++ b/Library/UIKit/UIStoryboard+StoryboardViewControllerResource.swift
@@ -0,0 +1,26 @@
+//
+//  UIViewController+StoryboardViewControllerResource.swift
+//  R.swift.Library
+//
+//  Created by Mathijs Kadijk on 13-03-16.
+//  From: https://github.com/mac-cain13/R.swift.Library
+//  License: MIT License
+//
+
+#if !os(watchOS)
+import Foundation
+import UIKit
+
+public extension UIStoryboard {
+  /**
+   Instantiates and returns the view controller with the specified resource (R.storyboard.*.*).
+
+   - parameter resource: An resource (R.storyboard.*.*) that uniquely identifies the view controller in the storyboard file. If the specified resource does not exist in the storyboard file, this method raises an exception.
+
+   - returns: The view controller corresponding to the specified resource (R.storyboard.*.*). If no view controller is associated, this method throws an exception.
+   */
+  func instantiateViewController<ViewControllerResource: StoryboardViewControllerResourceType>(withResource resource: ViewControllerResource) -> ViewControllerResource.ViewControllerType?  {
+    return self.instantiateViewController(withIdentifier: resource.identifier) as? ViewControllerResource.ViewControllerType
+  }
+}
+#endif
diff --git a/Library/UIKit/UITableView+ReuseIdentifierProtocol.swift b/Library/UIKit/UITableView+ReuseIdentifierProtocol.swift
index 5334939..aa6589e 100644
--- a/Library/UIKit/UITableView+ReuseIdentifierProtocol.swift
+++ b/Library/UIKit/UITableView+ReuseIdentifierProtocol.swift
@@ -3,9 +3,11 @@
 //  R.swift Library
 //
 //  Created by Mathijs Kadijk on 06-12-15.
-//  Copyright © 2015 Mathijs Kadijk. All rights reserved.
+//  From: https://github.com/mac-cain13/R.swift.Library
+//  License: MIT License
 //
 
+#if !os(watchOS)
 import Foundation
 import UIKit
 
@@ -20,21 +22,17 @@ public extension UITableView {
    
    - precondition: You must register a class or nib file using the registerNib: or registerClass:forCellReuseIdentifier: method before calling this method.
   */
-  public func dequeueReusableCellWithIdentifier<Identifier: ReuseIdentifierType where Identifier.ReusableType: UITableViewCell>(identifier: Identifier, forIndexPath indexPath: NSIndexPath) -> Identifier.ReusableType? {
-    return dequeueReusableCellWithIdentifier(identifier.identifier, forIndexPath: indexPath) as? Identifier.ReusableType
+  func dequeueReusableCell<Identifier: ReuseIdentifierType>(withIdentifier identifier: Identifier, for indexPath: IndexPath) -> Identifier.ReusableType?
+    where Identifier.ReusableType: UITableViewCell
+  {
+    return dequeueReusableCell(withIdentifier: identifier.identifier, for: indexPath) as? Identifier.ReusableType
   }
 
-  /**
-   Returns a typed reusable table-view cell object for the specified reuse identifier and adds it to the table.
-
-   - parameter identifier: A R.reuseIdentifier.* value identifying the cell object to be reused.
-
-   - returns: The UITableViewCell subclass with the associated reuse identifier or nil if it couldn't be casted correctly.
-
-   - precondition: You must register a class or nib file using the registerNib: or registerClass:forCellReuseIdentifier: method before calling this method.
-   */
-  public func dequeueReusableCellWithIdentifier<Identifier: ReuseIdentifierType where Identifier.ReusableType: UITableViewCell>(identifier: Identifier) -> Identifier.ReusableType? {
-    return dequeueReusableCellWithIdentifier(identifier.identifier) as? Identifier.ReusableType
+  @available(*, unavailable, message: "Use dequeueReusableCell(withIdentifier:for:) instead")
+  func dequeueReusableCell<Identifier: ReuseIdentifierType>(withIdentifier identifier: Identifier) -> Identifier.ReusableType?
+    where Identifier.ReusableType: UITableViewCell
+  {
+    fatalError()
   }
 
   /**
@@ -44,17 +42,10 @@ public extension UITableView {
    
    - returns: A UITableViewHeaderFooterView object with the associated identifier or nil if no such object exists in the reusable view queue or if it couldn't be cast correctly.
    */
-  public func dequeueReusableHeaderFooterViewWithIdentifier<Identifier: ReuseIdentifierType where Identifier.ReusableType: UITableViewCell>(identifier: Identifier) -> Identifier.ReusableType? {
-    return dequeueReusableHeaderFooterViewWithIdentifier(identifier.identifier) as? Identifier.ReusableType
-  }
-
-  /**
-   Register an array of R.nib.*, each containing a cell, with the table view under it's contained identifier.
-
-   - parameter nibResources: Array of nib resources (R.nib.*) each containing a table view cell that has a reuse identifier
-   */
-  public func registerNibs<Resource: NibResourceType where Resource: ReuseIdentifierType, Resource.ReusableType: UITableViewCell>(nibResources: [Resource]) {
-    nibResources.forEach(registerNib)
+  func dequeueReusableHeaderFooterView<Identifier: ReuseIdentifierType>(withIdentifier identifier: Identifier) -> Identifier.ReusableType?
+    where Identifier.ReusableType: UITableViewHeaderFooterView
+  {
+    return dequeueReusableHeaderFooterView(withIdentifier: identifier.identifier) as? Identifier.ReusableType
   }
 
   /**
@@ -62,8 +53,8 @@ public extension UITableView {
    
    - parameter nibResource: A nib resource (R.nib.*) containing a table view cell that has a reuse identifier
   */
-  public func registerNib<Resource: NibResourceType where Resource: ReuseIdentifierType, Resource.ReusableType: UITableViewCell>(nibResource: Resource) {
-    registerNib(UINib(resource: nibResource), forCellReuseIdentifier: nibResource.identifier)
+  func register<Resource: NibResourceType & ReuseIdentifierType>(_ nibResource: Resource) where Resource.ReusableType: UITableViewCell {
+    register(UINib(resource: nibResource), forCellReuseIdentifier: nibResource.identifier)
   }
 
   /**
@@ -71,7 +62,8 @@ public extension UITableView {
 
    - parameter nibResource: A nib resource (R.nib.*) containing a view that has a reuse identifier
    */
-  public func registerNibForHeaderFooterView<Resource: NibResourceType where Resource: ReuseIdentifierType, Resource.ReusableType: UIView>(nibResource: Resource) {
-    registerNib(UINib(resource: nibResource), forHeaderFooterViewReuseIdentifier: nibResource.identifier)
+  func registerHeaderFooterView<Resource: NibResourceType>(_ nibResource: Resource) where Resource: ReuseIdentifierType, Resource.ReusableType: UIView {
+    register(UINib(resource: nibResource), forHeaderFooterViewReuseIdentifier: nibResource.identifier)
   }
 }
+#endif
diff --git a/Library/UIKit/UIViewController+NibResource.swift b/Library/UIKit/UIViewController+NibResource.swift
index 05ed1bb..717bd09 100644
--- a/Library/UIKit/UIViewController+NibResource.swift
+++ b/Library/UIKit/UIViewController+NibResource.swift
@@ -3,9 +3,11 @@
 //  R.swift Library
 //
 //  Created by Mathijs Kadijk on 06-12-15.
-//  Copyright © 2015 Mathijs Kadijk. All rights reserved.
+//  From: https://github.com/mac-cain13/R.swift.Library
+//  License: MIT License
 //
 
+#if !os(watchOS)
 import Foundation
 import UIKit
 
@@ -13,11 +15,12 @@ public extension UIViewController {
   /**
    Returns a newly initialized view controller with the nib resource (R.nib.*).
    
-   - parameter nib: The name of the nib resource (R.nib.*) to associate with the view controller.
+   - parameter nib: The nib resource (R.nib.*) to associate with the view controller.
    
    - returns: A newly initialized UIViewController object.
   */
-  public convenience init(nib: NibResourceType) {
+  convenience init(nib: NibResourceType) {
     self.init(nibName: nib.name, bundle: nib.bundle)
   }
 }
+#endif
diff --git a/Library/UIKit/UIViewController+StoryboardSegueIdentifierProtocol.swift b/Library/UIKit/UIViewController+StoryboardSegueIdentifierProtocol.swift
index fbbb6a4..e7aff99 100644
--- a/Library/UIKit/UIViewController+StoryboardSegueIdentifierProtocol.swift
+++ b/Library/UIKit/UIViewController+StoryboardSegueIdentifierProtocol.swift
@@ -3,22 +3,39 @@
 //  R.swift Library
 //
 //  Created by Mathijs Kadijk on 06-12-15.
-//  Copyright © 2015 Mathijs Kadijk. All rights reserved.
+//  From: https://github.com/mac-cain13/R.swift.Library
+//  License: MIT License
 //
 
+#if !os(watchOS)
 import Foundation
 import UIKit
 
-public extension UIViewController {
+public protocol SeguePerformerType {
+  func performSegue(withIdentifier identifier: String, sender: Any?)
+}
+
+extension UIViewController: SeguePerformerType {}
+
+public extension SeguePerformerType {
   /**
-   Initiates the segue with the specified identifier (R.segue.*) from the current view controller'€™s storyboard file.
-   
+   Initiates the segue with the specified identifier (R.segue.*) from the current view controller's storyboard file.
    - parameter identifier: The R.segue.* that identifies the triggered segue.
-   - parameter segue: The object that you want to use to initiate the segue. This object is made available for informational purposes during the actual segue.
-   
-   - SeeAlso: Library for typed block based segues: https://github.com/tomlokhorst/SegueManager
-  */
-  public func performSegueWithIdentifier<Identifier: StoryboardSegueIdentifierType>(identifier: Identifier, sender: AnyObject?) {
-    performSegueWithIdentifier(identifier.identifier, sender: sender)
+   - parameter sender: The object that you want to use to initiate the segue. This object is made available for informational purposes during the actual segue.
+   - SeeAlso: Library for typed block based segues: [tomlokhorst/SegueManager](https://github.com/tomlokhorst/SegueManager)
+   */
+  func performSegue<Segue, Destination>(withIdentifier identifier: StoryboardSegueIdentifier<Segue, Self, Destination>, sender: Any?) {
+    performSegue(withIdentifier: identifier.identifier, sender: sender)
+  }
+}
+
+public extension StoryboardSegue where Source : UIViewController {
+  /**
+   Performs this segue on the source view controller
+   - parameter sender: The object that you want to use to initiate the segue. This object is made available for informational purposes during the actual segue.
+   */
+  func performSegue(sender: Any? = nil) {
+    source.performSegue(withIdentifier: identifier.identifier, sender: sender)
   }
 }
+#endif
diff --git a/LibraryTests/RswiftTests.swift b/LibraryTests/RswiftTests.swift
index 899ff73..d7e734e 100644
--- a/LibraryTests/RswiftTests.swift
+++ b/LibraryTests/RswiftTests.swift
@@ -28,7 +28,7 @@ class RswiftTests: XCTestCase {
     
     func testPerformanceExample() {
         // This is an example of a performance test case.
-        self.measureBlock {
+        self.measure {
             // Put the code you want to measure the time of here.
         }
     }
diff --git a/Package.swift b/Package.swift
new file mode 100644
index 0000000..a7e2267
--- /dev/null
+++ b/Package.swift
@@ -0,0 +1,19 @@
+// swift-tools-version:5.0
+
+import PackageDescription
+
+let package = Package(
+    name: "R.swift.Library",
+    platforms: [
+        .iOS(.v9),
+        .tvOS(.v9),
+        .watchOS(.v2),
+    ],
+    products: [
+        .library(name: "Rswift", targets: ["Rswift"]),
+        .library(name: "RswiftDynamic", type: .dynamic, targets: ["Rswift"])
+    ],
+    targets: [
+        .target(name: "Rswift", path: "Library")
+    ]
+)
diff --git a/R.swift.Library.podspec b/R.swift.Library.podspec
index f042fb0..9c9a766 100644
--- a/R.swift.Library.podspec
+++ b/R.swift.Library.podspec
@@ -1,7 +1,7 @@
 Pod::Spec.new do |spec|
 
   spec.name         = "R.swift.Library"
-  spec.version      = "1.0.1"
+  spec.version      = ENV['POD_VERSION']
   spec.license      = "MIT"
 
   spec.summary      = "Companion library for R.swift, featuring types used to type resources"
@@ -17,11 +17,17 @@ Pod::Spec.new do |spec|
 
   spec.requires_arc = true
   spec.source          = { :git => "https://github.com/mac-cain13/R.swift.Library.git", :tag => "v#{spec.version}" }
+  spec.swift_version   = "5.1"
 
-  spec.ios.deployment_target     = '8.0'
-  spec.tvos.deployment_target    = '9.0'
+  spec.pod_target_xcconfig = { 'APPLICATION_EXTENSION_API_ONLY' => 'YES' }
+
+  spec.ios.deployment_target     = '11.0'
+  spec.ios.source_files  = "Library/**/*.swift"
+  spec.tvos.deployment_target    = '11.0'
+  spec.tvos.source_files  = "Library/**/*.swift"
+  spec.watchos.deployment_target = '4.0'
+  spec.watchos.source_files  = ["Library/Core/*.swift", "Library/Foundation/*.swift"]
 
   spec.module_name   = "Rswift"
-  spec.source_files  = "Library/**/*.swift"
 
 end
diff --git a/R.swift.Library.xcodeproj/project.pbxproj b/R.swift.Library.xcodeproj/project.pbxproj
index 2d642b1..b1ea7f0 100644
--- a/R.swift.Library.xcodeproj/project.pbxproj
+++ b/R.swift.Library.xcodeproj/project.pbxproj
@@ -7,6 +7,23 @@
 	objects = {
 
 /* Begin PBXBuildFile section */
+		2F5FBC4821355AC400A83A69 /* ColorResource.swift in Sources */ = {isa = PBXBuildFile; fileRef = E22D43661C95EEA100692FFF /* ColorResource.swift */; };
+		2F5FBC4A21355ADB00A83A69 /* Bundle+FileResource.swift in Sources */ = {isa = PBXBuildFile; fileRef = D56DC7721C42B65C00623437 /* Bundle+FileResource.swift */; };
+		2F5FBC4B21355ADB00A83A69 /* Data+FileResource.swift in Sources */ = {isa = PBXBuildFile; fileRef = E20F34A61C92B44100338F81 /* Data+FileResource.swift */; };
+		2F5FBC4C21355ADF00A83A69 /* FileResource.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5E435AC1C3D00770091090C /* FileResource.swift */; };
+		2F5FBC4D21355ADF00A83A69 /* FontResource.swift in Sources */ = {isa = PBXBuildFile; fileRef = D57E1EB21C3D762300DDA68F /* FontResource.swift */; };
+		2F5FBC4E21355ADF00A83A69 /* Identifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = D543F9BA1C1497EB00D16A0C /* Identifier.swift */; };
+		2F5FBC4F21355ADF00A83A69 /* ImageResource.swift in Sources */ = {isa = PBXBuildFile; fileRef = D553F5841C44157000885232 /* ImageResource.swift */; };
+		2F5FBC5021355ADF00A83A69 /* NibResource.swift in Sources */ = {isa = PBXBuildFile; fileRef = D543F9C01C14984300D16A0C /* NibResource.swift */; };
+		2F5FBC5121355ADF00A83A69 /* ReuseIdentifierProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = D543F9BC1C14980600D16A0C /* ReuseIdentifierProtocol.swift */; };
+		2F5FBC5221355ADF00A83A69 /* StoryboardResource.swift in Sources */ = {isa = PBXBuildFile; fileRef = D57E1EB61C3E482A00DDA68F /* StoryboardResource.swift */; };
+		2F5FBC5321355ADF00A83A69 /* StoryboardSegueIdentifierProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = D543F9BE1C14983100D16A0C /* StoryboardSegueIdentifierProtocol.swift */; };
+		2F5FBC5421355ADF00A83A69 /* StoryboardViewControllerResource.swift in Sources */ = {isa = PBXBuildFile; fileRef = D51335261C959DF20014C9D4 /* StoryboardViewControllerResource.swift */; };
+		2F5FBC5521355ADF00A83A69 /* StringResource.swift in Sources */ = {isa = PBXBuildFile; fileRef = E250BE961CCBF60300CC71DE /* StringResource.swift */; };
+		2F5FBC5621355ADF00A83A69 /* Validatable.swift in Sources */ = {isa = PBXBuildFile; fileRef = D53F19231C229D7200AE2FAD /* Validatable.swift */; };
+		2F5FBC5821355B0200A83A69 /* UIColor+ColorResource.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2CA68EE1EE75992009C4DB4 /* UIColor+ColorResource.swift */; };
+		2F5FBC5921355B0200A83A69 /* UIFont+FontResource.swift in Sources */ = {isa = PBXBuildFile; fileRef = D57E1EB41C3D774000DDA68F /* UIFont+FontResource.swift */; };
+		2F5FBC5A21355B0200A83A69 /* UIImage+ImageResource.swift in Sources */ = {isa = PBXBuildFile; fileRef = D553F5861C44170E00885232 /* UIImage+ImageResource.swift */; };
 		806E699C1C42BD9C00DE3A8B /* Rswift.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 806E69921C42BD9C00DE3A8B /* Rswift.framework */; };
 		806E69A91C42BDDA00DE3A8B /* FileResource.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5E435AC1C3D00770091090C /* FileResource.swift */; };
 		806E69AA1C42BDDA00DE3A8B /* FontResource.swift in Sources */ = {isa = PBXBuildFile; fileRef = D57E1EB21C3D762300DDA68F /* FontResource.swift */; };
@@ -27,6 +44,11 @@
 		806E69BA1C42BDE000DE3A8B /* UIViewController+NibResource.swift in Sources */ = {isa = PBXBuildFile; fileRef = D543F9C71C14995800D16A0C /* UIViewController+NibResource.swift */; };
 		806E69BB1C42BDE000DE3A8B /* UIViewController+StoryboardSegueIdentifierProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = D543F9C91C14998800D16A0C /* UIViewController+StoryboardSegueIdentifierProtocol.swift */; };
 		806E69BC1C42BDE300DE3A8B /* RswiftTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D592465D1C117A55007F94C7 /* RswiftTests.swift */; };
+		D51335271C959DF20014C9D4 /* StoryboardViewControllerResource.swift in Sources */ = {isa = PBXBuildFile; fileRef = D51335261C959DF20014C9D4 /* StoryboardViewControllerResource.swift */; };
+		D51335291C95A79B0014C9D4 /* UIStoryboard+StoryboardViewControllerResource.swift in Sources */ = {isa = PBXBuildFile; fileRef = D51335281C95A79B0014C9D4 /* UIStoryboard+StoryboardViewControllerResource.swift */; };
+		D513352A1C95B7510014C9D4 /* StoryboardViewControllerResource.swift in Sources */ = {isa = PBXBuildFile; fileRef = D51335261C959DF20014C9D4 /* StoryboardViewControllerResource.swift */; };
+		D513352B1C95B7620014C9D4 /* UIStoryboard+StoryboardViewControllerResource.swift in Sources */ = {isa = PBXBuildFile; fileRef = D51335281C95A79B0014C9D4 /* UIStoryboard+StoryboardViewControllerResource.swift */; };
+		D513352C1C95C61E0014C9D4 /* Data+FileResource.swift in Sources */ = {isa = PBXBuildFile; fileRef = E20F34A61C92B44100338F81 /* Data+FileResource.swift */; };
 		D53F19241C229D7200AE2FAD /* Validatable.swift in Sources */ = {isa = PBXBuildFile; fileRef = D53F19231C229D7200AE2FAD /* Validatable.swift */; };
 		D543F9BB1C1497EB00D16A0C /* Identifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = D543F9BA1C1497EB00D16A0C /* Identifier.swift */; };
 		D543F9BD1C14980600D16A0C /* ReuseIdentifierProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = D543F9BC1C14980600D16A0C /* ReuseIdentifierProtocol.swift */; };
@@ -40,9 +62,9 @@
 		D553F5851C44157000885232 /* ImageResource.swift in Sources */ = {isa = PBXBuildFile; fileRef = D553F5841C44157000885232 /* ImageResource.swift */; };
 		D553F5871C44170E00885232 /* UIImage+ImageResource.swift in Sources */ = {isa = PBXBuildFile; fileRef = D553F5861C44170E00885232 /* UIImage+ImageResource.swift */; };
 		D5588CAB1C3F9DBE00912F97 /* UINib+NibResource.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5588CAA1C3F9DBE00912F97 /* UINib+NibResource.swift */; };
-		D56DC7731C42B65C00623437 /* NSBundle+FileResource.swift in Sources */ = {isa = PBXBuildFile; fileRef = D56DC7721C42B65C00623437 /* NSBundle+FileResource.swift */; };
+		D56DC7731C42B65C00623437 /* Bundle+FileResource.swift in Sources */ = {isa = PBXBuildFile; fileRef = D56DC7721C42B65C00623437 /* Bundle+FileResource.swift */; };
 		D5728B311C4D541200E38168 /* ImageResource.swift in Sources */ = {isa = PBXBuildFile; fileRef = D553F5841C44157000885232 /* ImageResource.swift */; };
-		D5728B321C4D541500E38168 /* NSBundle+FileResource.swift in Sources */ = {isa = PBXBuildFile; fileRef = D56DC7721C42B65C00623437 /* NSBundle+FileResource.swift */; };
+		D5728B321C4D541500E38168 /* Bundle+FileResource.swift in Sources */ = {isa = PBXBuildFile; fileRef = D56DC7721C42B65C00623437 /* Bundle+FileResource.swift */; };
 		D5728B331C4D541D00E38168 /* UIImage+ImageResource.swift in Sources */ = {isa = PBXBuildFile; fileRef = D553F5861C44170E00885232 /* UIImage+ImageResource.swift */; };
 		D5728B341C4D542300E38168 /* Rswift.h in Headers */ = {isa = PBXBuildFile; fileRef = D59246511C117A55007F94C7 /* Rswift.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		D57E1EB31C3D762300DDA68F /* FontResource.swift in Sources */ = {isa = PBXBuildFile; fileRef = D57E1EB21C3D762300DDA68F /* FontResource.swift */; };
@@ -55,6 +77,13 @@
 		D592465E1C117A55007F94C7 /* RswiftTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D592465D1C117A55007F94C7 /* RswiftTests.swift */; };
 		D5E435A91C3CFB460091090C /* NibResource+UIKit.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5E435A81C3CFB460091090C /* NibResource+UIKit.swift */; };
 		D5E435AD1C3D00770091090C /* FileResource.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5E435AC1C3D00770091090C /* FileResource.swift */; };
+		E20F34A71C92B44100338F81 /* Data+FileResource.swift in Sources */ = {isa = PBXBuildFile; fileRef = E20F34A61C92B44100338F81 /* Data+FileResource.swift */; };
+		E22D43671C95EEA100692FFF /* ColorResource.swift in Sources */ = {isa = PBXBuildFile; fileRef = E22D43661C95EEA100692FFF /* ColorResource.swift */; };
+		E24720CA1C96B4D100DF291D /* ColorResource.swift in Sources */ = {isa = PBXBuildFile; fileRef = E22D43661C95EEA100692FFF /* ColorResource.swift */; };
+		E250BE971CCBF60300CC71DE /* StringResource.swift in Sources */ = {isa = PBXBuildFile; fileRef = E250BE961CCBF60300CC71DE /* StringResource.swift */; };
+		E250BE991CCBF7E900CC71DE /* StringResource.swift in Sources */ = {isa = PBXBuildFile; fileRef = E250BE961CCBF60300CC71DE /* StringResource.swift */; };
+		E2CA68EF1EE75992009C4DB4 /* UIColor+ColorResource.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2CA68EE1EE75992009C4DB4 /* UIColor+ColorResource.swift */; };
+		E2CA68F21EE75A49009C4DB4 /* UIColor+ColorResource.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2CA68EE1EE75992009C4DB4 /* UIColor+ColorResource.swift */; };
 /* End PBXBuildFile section */
 
 /* Begin PBXContainerItemProxy section */
@@ -75,8 +104,11 @@
 /* End PBXContainerItemProxy section */
 
 /* Begin PBXFileReference section */
+		2F5FBC4021355A1400A83A69 /* Rswift.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Rswift.framework; sourceTree = BUILT_PRODUCTS_DIR; };
 		806E69921C42BD9C00DE3A8B /* Rswift.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Rswift.framework; sourceTree = BUILT_PRODUCTS_DIR; };
 		806E699B1C42BD9C00DE3A8B /* RswiftTests-tvOS.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "RswiftTests-tvOS.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
+		D51335261C959DF20014C9D4 /* StoryboardViewControllerResource.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StoryboardViewControllerResource.swift; sourceTree = "<group>"; };
+		D51335281C95A79B0014C9D4 /* UIStoryboard+StoryboardViewControllerResource.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIStoryboard+StoryboardViewControllerResource.swift"; sourceTree = "<group>"; };
 		D53F19231C229D7200AE2FAD /* Validatable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Validatable.swift; sourceTree = "<group>"; };
 		D543F9BA1C1497EB00D16A0C /* Identifier.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Identifier.swift; sourceTree = "<group>"; };
 		D543F9BC1C14980600D16A0C /* ReuseIdentifierProtocol.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReuseIdentifierProtocol.swift; sourceTree = "<group>"; };
@@ -90,7 +122,7 @@
 		D553F5841C44157000885232 /* ImageResource.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ImageResource.swift; sourceTree = "<group>"; };
 		D553F5861C44170E00885232 /* UIImage+ImageResource.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIImage+ImageResource.swift"; sourceTree = "<group>"; };
 		D5588CAA1C3F9DBE00912F97 /* UINib+NibResource.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UINib+NibResource.swift"; sourceTree = "<group>"; };
-		D56DC7721C42B65C00623437 /* NSBundle+FileResource.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NSBundle+FileResource.swift"; sourceTree = "<group>"; };
+		D56DC7721C42B65C00623437 /* Bundle+FileResource.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Bundle+FileResource.swift"; sourceTree = "<group>"; };
 		D57E1EB21C3D762300DDA68F /* FontResource.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FontResource.swift; sourceTree = "<group>"; };
 		D57E1EB41C3D774000DDA68F /* UIFont+FontResource.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIFont+FontResource.swift"; sourceTree = "<group>"; };
 		D57E1EB61C3E482A00DDA68F /* StoryboardResource.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StoryboardResource.swift; sourceTree = "<group>"; };
@@ -104,9 +136,20 @@
 		D592465F1C117A55007F94C7 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
 		D5E435A81C3CFB460091090C /* NibResource+UIKit.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NibResource+UIKit.swift"; sourceTree = "<group>"; };
 		D5E435AC1C3D00770091090C /* FileResource.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FileResource.swift; sourceTree = "<group>"; };
+		E20F34A61C92B44100338F81 /* Data+FileResource.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Data+FileResource.swift"; sourceTree = "<group>"; };
+		E22D43661C95EEA100692FFF /* ColorResource.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ColorResource.swift; sourceTree = "<group>"; };
+		E250BE961CCBF60300CC71DE /* StringResource.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StringResource.swift; sourceTree = "<group>"; };
+		E2CA68EE1EE75992009C4DB4 /* UIColor+ColorResource.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIColor+ColorResource.swift"; sourceTree = "<group>"; };
 /* End PBXFileReference section */
 
 /* Begin PBXFrameworksBuildPhase section */
+		2F5FBC3D21355A1400A83A69 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
 		806E698E1C42BD9C00DE3A8B /* Frameworks */ = {
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
@@ -147,13 +190,15 @@
 				D57E1EB81C3E4C1A00DDA68F /* StoryboardResourceWithInitialController+UIKit.swift */,
 				D543F9CE1C149C0A00D16A0C /* TypedStoryboardSegueInfo+UIStoryboardSegue.swift */,
 				D543F9C51C14992000D16A0C /* UICollectionView+ReuseIdentifierProtocol.swift */,
+				E2CA68EE1EE75992009C4DB4 /* UIColor+ColorResource.swift */,
 				D57E1EB41C3D774000DDA68F /* UIFont+FontResource.swift */,
+				D553F5861C44170E00885232 /* UIImage+ImageResource.swift */,
 				D5588CAA1C3F9DBE00912F97 /* UINib+NibResource.swift */,
 				D57E1EBA1C3E4C4300DDA68F /* UIStoryboard+StoryboardResource.swift */,
+				D51335281C95A79B0014C9D4 /* UIStoryboard+StoryboardViewControllerResource.swift */,
 				D543F9C31C1498FB00D16A0C /* UITableView+ReuseIdentifierProtocol.swift */,
 				D543F9C71C14995800D16A0C /* UIViewController+NibResource.swift */,
 				D543F9C91C14998800D16A0C /* UIViewController+StoryboardSegueIdentifierProtocol.swift */,
-				D553F5861C44170E00885232 /* UIImage+ImageResource.swift */,
 			);
 			path = UIKit;
 			sourceTree = "<group>";
@@ -161,15 +206,18 @@
 		D543F9CD1C1499CF00D16A0C /* Core */ = {
 			isa = PBXGroup;
 			children = (
+				E22D43661C95EEA100692FFF /* ColorResource.swift */,
 				D5E435AC1C3D00770091090C /* FileResource.swift */,
 				D57E1EB21C3D762300DDA68F /* FontResource.swift */,
 				D543F9BA1C1497EB00D16A0C /* Identifier.swift */,
+				D553F5841C44157000885232 /* ImageResource.swift */,
 				D543F9C01C14984300D16A0C /* NibResource.swift */,
 				D543F9BC1C14980600D16A0C /* ReuseIdentifierProtocol.swift */,
 				D57E1EB61C3E482A00DDA68F /* StoryboardResource.swift */,
 				D543F9BE1C14983100D16A0C /* StoryboardSegueIdentifierProtocol.swift */,
+				D51335261C959DF20014C9D4 /* StoryboardViewControllerResource.swift */,
+				E250BE961CCBF60300CC71DE /* StringResource.swift */,
 				D53F19231C229D7200AE2FAD /* Validatable.swift */,
-				D553F5841C44157000885232 /* ImageResource.swift */,
 			);
 			path = Core;
 			sourceTree = "<group>";
@@ -177,7 +225,8 @@
 		D56DC7711C42B62E00623437 /* Foundation */ = {
 			isa = PBXGroup;
 			children = (
-				D56DC7721C42B65C00623437 /* NSBundle+FileResource.swift */,
+				D56DC7721C42B65C00623437 /* Bundle+FileResource.swift */,
+				E20F34A61C92B44100338F81 /* Data+FileResource.swift */,
 			);
 			path = Foundation;
 			sourceTree = "<group>";
@@ -189,7 +238,10 @@
 				D592465C1C117A55007F94C7 /* LibraryTests */,
 				D592464F1C117A55007F94C7 /* Products */,
 			);
+			indentWidth = 2;
 			sourceTree = "<group>";
+			tabWidth = 2;
+			usesTabs = 0;
 		};
 		D592464F1C117A55007F94C7 /* Products */ = {
 			isa = PBXGroup;
@@ -198,6 +250,7 @@
 				D59246581C117A55007F94C7 /* RswiftTests-iOS.xctest */,
 				806E69921C42BD9C00DE3A8B /* Rswift.framework */,
 				806E699B1C42BD9C00DE3A8B /* RswiftTests-tvOS.xctest */,
+				2F5FBC4021355A1400A83A69 /* Rswift.framework */,
 			);
 			name = Products;
 			sourceTree = "<group>";
@@ -226,6 +279,13 @@
 /* End PBXGroup section */
 
 /* Begin PBXHeadersBuildPhase section */
+		2F5FBC3B21355A1400A83A69 /* Headers */ = {
+			isa = PBXHeadersBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
 		806E698F1C42BD9C00DE3A8B /* Headers */ = {
 			isa = PBXHeadersBuildPhase;
 			buildActionMask = 2147483647;
@@ -245,6 +305,24 @@
 /* End PBXHeadersBuildPhase section */
 
 /* Begin PBXNativeTarget section */
+		2F5FBC3F21355A1400A83A69 /* Rswift-watchOS */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = 2F5FBC4721355A1400A83A69 /* Build configuration list for PBXNativeTarget "Rswift-watchOS" */;
+			buildPhases = (
+				2F5FBC3B21355A1400A83A69 /* Headers */,
+				2F5FBC3C21355A1400A83A69 /* Sources */,
+				2F5FBC3D21355A1400A83A69 /* Frameworks */,
+				2F5FBC3E21355A1400A83A69 /* Resources */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = "Rswift-watchOS";
+			productName = "Rswift-watchOS";
+			productReference = 2F5FBC4021355A1400A83A69 /* Rswift.framework */;
+			productType = "com.apple.product-type.framework";
+		};
 		806E69911C42BD9C00DE3A8B /* Rswift-tvOS */ = {
 			isa = PBXNativeTarget;
 			buildConfigurationList = 806E69A31C42BD9C00DE3A8B /* Build configuration list for PBXNativeTarget "Rswift-tvOS" */;
@@ -324,20 +402,29 @@
 			isa = PBXProject;
 			attributes = {
 				LastSwiftUpdateCheck = 0720;
-				LastUpgradeCheck = 0710;
+				LastUpgradeCheck = 1100;
 				ORGANIZATIONNAME = "Mathijs Kadijk";
 				TargetAttributes = {
+					2F5FBC3F21355A1400A83A69 = {
+						CreatedOnToolsVersion = 10.0;
+						LastSwiftMigration = 1100;
+						ProvisioningStyle = Automatic;
+					};
 					806E69911C42BD9C00DE3A8B = {
 						CreatedOnToolsVersion = 7.2;
+						LastSwiftMigration = 1020;
 					};
 					806E699A1C42BD9C00DE3A8B = {
 						CreatedOnToolsVersion = 7.2;
+						LastSwiftMigration = 1020;
 					};
 					D592464D1C117A55007F94C7 = {
 						CreatedOnToolsVersion = 7.1.1;
+						LastSwiftMigration = 1020;
 					};
 					D59246571C117A55007F94C7 = {
 						CreatedOnToolsVersion = 7.1.1;
+						LastSwiftMigration = 1020;
 					};
 				};
 			};
@@ -346,6 +433,7 @@
 			developmentRegion = English;
 			hasScannedForEncodings = 0;
 			knownRegions = (
+				English,
 				en,
 			);
 			mainGroup = D59246441C117A54007F94C7;
@@ -357,11 +445,19 @@
 				D59246571C117A55007F94C7 /* RswiftTests-iOS */,
 				806E69911C42BD9C00DE3A8B /* Rswift-tvOS */,
 				806E699A1C42BD9C00DE3A8B /* RswiftTests-tvOS */,
+				2F5FBC3F21355A1400A83A69 /* Rswift-watchOS */,
 			);
 		};
 /* End PBXProject section */
 
 /* Begin PBXResourcesBuildPhase section */
+		2F5FBC3E21355A1400A83A69 /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
 		806E69901C42BD9C00DE3A8B /* Resources */ = {
 			isa = PBXResourcesBuildPhase;
 			buildActionMask = 2147483647;
@@ -393,12 +489,39 @@
 /* End PBXResourcesBuildPhase section */
 
 /* Begin PBXSourcesBuildPhase section */
+		2F5FBC3C21355A1400A83A69 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				2F5FBC4F21355ADF00A83A69 /* ImageResource.swift in Sources */,
+				2F5FBC5421355ADF00A83A69 /* StoryboardViewControllerResource.swift in Sources */,
+				2F5FBC4D21355ADF00A83A69 /* FontResource.swift in Sources */,
+				2F5FBC5A21355B0200A83A69 /* UIImage+ImageResource.swift in Sources */,
+				2F5FBC5921355B0200A83A69 /* UIFont+FontResource.swift in Sources */,
+				2F5FBC4821355AC400A83A69 /* ColorResource.swift in Sources */,
+				2F5FBC4C21355ADF00A83A69 /* FileResource.swift in Sources */,
+				2F5FBC5221355ADF00A83A69 /* StoryboardResource.swift in Sources */,
+				2F5FBC5521355ADF00A83A69 /* StringResource.swift in Sources */,
+				2F5FBC4B21355ADB00A83A69 /* Data+FileResource.swift in Sources */,
+				2F5FBC5021355ADF00A83A69 /* NibResource.swift in Sources */,
+				2F5FBC5321355ADF00A83A69 /* StoryboardSegueIdentifierProtocol.swift in Sources */,
+				2F5FBC4E21355ADF00A83A69 /* Identifier.swift in Sources */,
+				2F5FBC4A21355ADB00A83A69 /* Bundle+FileResource.swift in Sources */,
+				2F5FBC5821355B0200A83A69 /* UIColor+ColorResource.swift in Sources */,
+				2F5FBC5121355ADF00A83A69 /* ReuseIdentifierProtocol.swift in Sources */,
+				2F5FBC5621355ADF00A83A69 /* Validatable.swift in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
 		806E698D1C42BD9C00DE3A8B /* Sources */ = {
 			isa = PBXSourcesBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
 				D5728B311C4D541200E38168 /* ImageResource.swift in Sources */,
+				D513352B1C95B7620014C9D4 /* UIStoryboard+StoryboardViewControllerResource.swift in Sources */,
+				D513352C1C95C61E0014C9D4 /* Data+FileResource.swift in Sources */,
 				806E69AD1C42BDDA00DE3A8B /* ReuseIdentifierProtocol.swift in Sources */,
+				E2CA68F21EE75A49009C4DB4 /* UIColor+ColorResource.swift in Sources */,
 				806E69B61C42BDE000DE3A8B /* UINib+NibResource.swift in Sources */,
 				806E69AA1C42BDDA00DE3A8B /* FontResource.swift in Sources */,
 				806E69B41C42BDE000DE3A8B /* UICollectionView+ReuseIdentifierProtocol.swift in Sources */,
@@ -410,11 +533,14 @@
 				806E69BB1C42BDE000DE3A8B /* UIViewController+StoryboardSegueIdentifierProtocol.swift in Sources */,
 				806E69B21C42BDE000DE3A8B /* StoryboardResourceWithInitialController+UIKit.swift in Sources */,
 				D5728B331C4D541D00E38168 /* UIImage+ImageResource.swift in Sources */,
+				E24720CA1C96B4D100DF291D /* ColorResource.swift in Sources */,
+				D513352A1C95B7510014C9D4 /* StoryboardViewControllerResource.swift in Sources */,
 				806E69AF1C42BDDA00DE3A8B /* StoryboardSegueIdentifierProtocol.swift in Sources */,
 				806E69AB1C42BDDA00DE3A8B /* Identifier.swift in Sources */,
 				806E69B01C42BDDA00DE3A8B /* Validatable.swift in Sources */,
 				806E69B31C42BDE000DE3A8B /* TypedStoryboardSegueInfo+UIStoryboardSegue.swift in Sources */,
-				D5728B321C4D541500E38168 /* NSBundle+FileResource.swift in Sources */,
+				E250BE991CCBF7E900CC71DE /* StringResource.swift in Sources */,
+				D5728B321C4D541500E38168 /* Bundle+FileResource.swift in Sources */,
 				806E69B91C42BDE000DE3A8B /* UITableView+ReuseIdentifierProtocol.swift in Sources */,
 				806E69AE1C42BDDA00DE3A8B /* StoryboardResource.swift in Sources */,
 				806E69A91C42BDDA00DE3A8B /* FileResource.swift in Sources */,
@@ -434,6 +560,7 @@
 			buildActionMask = 2147483647;
 			files = (
 				D543F9CA1C14998800D16A0C /* UIViewController+StoryboardSegueIdentifierProtocol.swift in Sources */,
+				D51335291C95A79B0014C9D4 /* UIStoryboard+StoryboardViewControllerResource.swift in Sources */,
 				D5E435AD1C3D00770091090C /* FileResource.swift in Sources */,
 				D543F9BB1C1497EB00D16A0C /* Identifier.swift in Sources */,
 				D57E1EB71C3E482A00DDA68F /* StoryboardResource.swift in Sources */,
@@ -442,17 +569,22 @@
 				D57E1EB91C3E4C1A00DDA68F /* StoryboardResourceWithInitialController+UIKit.swift in Sources */,
 				D543F9BD1C14980600D16A0C /* ReuseIdentifierProtocol.swift in Sources */,
 				D543F9C11C14984300D16A0C /* NibResource.swift in Sources */,
+				E2CA68EF1EE75992009C4DB4 /* UIColor+ColorResource.swift in Sources */,
 				D553F5851C44157000885232 /* ImageResource.swift in Sources */,
+				E20F34A71C92B44100338F81 /* Data+FileResource.swift in Sources */,
 				D57E1EB51C3D774000DDA68F /* UIFont+FontResource.swift in Sources */,
 				D5588CAB1C3F9DBE00912F97 /* UINib+NibResource.swift in Sources */,
 				D553F5871C44170E00885232 /* UIImage+ImageResource.swift in Sources */,
+				E22D43671C95EEA100692FFF /* ColorResource.swift in Sources */,
+				D51335271C959DF20014C9D4 /* StoryboardViewControllerResource.swift in Sources */,
 				D543F9C61C14992000D16A0C /* UICollectionView+ReuseIdentifierProtocol.swift in Sources */,
 				D543F9BF1C14983100D16A0C /* StoryboardSegueIdentifierProtocol.swift in Sources */,
 				D543F9C81C14995800D16A0C /* UIViewController+NibResource.swift in Sources */,
 				D5E435A91C3CFB460091090C /* NibResource+UIKit.swift in Sources */,
+				E250BE971CCBF60300CC71DE /* StringResource.swift in Sources */,
 				D543F9CF1C149C0A00D16A0C /* TypedStoryboardSegueInfo+UIStoryboardSegue.swift in Sources */,
 				D543F9C41C1498FB00D16A0C /* UITableView+ReuseIdentifierProtocol.swift in Sources */,
-				D56DC7731C42B65C00623437 /* NSBundle+FileResource.swift in Sources */,
+				D56DC7731C42B65C00623437 /* Bundle+FileResource.swift in Sources */,
 				D53F19241C229D7200AE2FAD /* Validatable.swift in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
@@ -481,9 +613,75 @@
 /* End PBXTargetDependency section */
 
 /* Begin XCBuildConfiguration section */
+		2F5FBC4521355A1400A83A69 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				APPLICATION_EXTENSION_API_ONLY = YES;
+				CLANG_ANALYZER_NONNULL = YES;
+				CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+				CLANG_ENABLE_OBJC_WEAK = YES;
+				CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+				CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+				CODE_SIGN_IDENTITY = "";
+				CODE_SIGN_STYLE = Automatic;
+				DEFINES_MODULE = YES;
+				DYLIB_COMPATIBILITY_VERSION = 1;
+				DYLIB_CURRENT_VERSION = 1;
+				DYLIB_INSTALL_NAME_BASE = "@rpath";
+				GCC_C_LANGUAGE_STANDARD = gnu11;
+				INFOPLIST_FILE = Library/Info.plist;
+				INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
+				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
+				MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
+				MTL_FAST_MATH = YES;
+				PRODUCT_BUNDLE_IDENTIFIER = nl.mathijskadijk.rswift.library;
+				PRODUCT_NAME = Rswift;
+				SDKROOT = watchos;
+				SKIP_INSTALL = YES;
+				SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
+				SWIFT_VERSION = 5.0;
+				TARGETED_DEVICE_FAMILY = 4;
+				WATCHOS_DEPLOYMENT_TARGET = 2.2;
+			};
+			name = Debug;
+		};
+		2F5FBC4621355A1400A83A69 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				APPLICATION_EXTENSION_API_ONLY = YES;
+				CLANG_ANALYZER_NONNULL = YES;
+				CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+				CLANG_ENABLE_OBJC_WEAK = YES;
+				CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+				CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+				CODE_SIGN_IDENTITY = "";
+				CODE_SIGN_STYLE = Automatic;
+				DEFINES_MODULE = YES;
+				DYLIB_COMPATIBILITY_VERSION = 1;
+				DYLIB_CURRENT_VERSION = 1;
+				DYLIB_INSTALL_NAME_BASE = "@rpath";
+				GCC_C_LANGUAGE_STANDARD = gnu11;
+				INFOPLIST_FILE = Library/Info.plist;
+				INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
+				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
+				MTL_FAST_MATH = YES;
+				PRODUCT_BUNDLE_IDENTIFIER = nl.mathijskadijk.rswift.library;
+				PRODUCT_NAME = Rswift;
+				SDKROOT = watchos;
+				SKIP_INSTALL = YES;
+				SWIFT_VERSION = 5.0;
+				TARGETED_DEVICE_FAMILY = 4;
+				WATCHOS_DEPLOYMENT_TARGET = 2.2;
+			};
+			name = Release;
+		};
 		806E69A41C42BD9C00DE3A8B /* Debug */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
+				APPLICATION_EXTENSION_API_ONLY = YES;
+				"CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
 				DEFINES_MODULE = YES;
 				DYLIB_COMPATIBILITY_VERSION = 1;
 				DYLIB_CURRENT_VERSION = 1;
@@ -495,6 +693,7 @@
 				PRODUCT_NAME = Rswift;
 				SDKROOT = appletvos;
 				SKIP_INSTALL = YES;
+				SWIFT_VERSION = 5.0;
 				TARGETED_DEVICE_FAMILY = 3;
 				TVOS_DEPLOYMENT_TARGET = 9.0;
 			};
@@ -503,6 +702,8 @@
 		806E69A51C42BD9C00DE3A8B /* Release */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
+				APPLICATION_EXTENSION_API_ONLY = YES;
+				"CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
 				DEFINES_MODULE = YES;
 				DYLIB_COMPATIBILITY_VERSION = 1;
 				DYLIB_CURRENT_VERSION = 1;
@@ -514,6 +715,7 @@
 				PRODUCT_NAME = Rswift;
 				SDKROOT = appletvos;
 				SKIP_INSTALL = YES;
+				SWIFT_VERSION = 5.0;
 				TARGETED_DEVICE_FAMILY = 3;
 				TVOS_DEPLOYMENT_TARGET = 9.0;
 			};
@@ -527,6 +729,7 @@
 				PRODUCT_BUNDLE_IDENTIFIER = nl.mathijskadijk.RswiftTests;
 				PRODUCT_NAME = "$(TARGET_NAME)";
 				SDKROOT = appletvos;
+				SWIFT_VERSION = 5.0;
 				TVOS_DEPLOYMENT_TARGET = 9.1;
 			};
 			name = Debug;
@@ -539,6 +742,7 @@
 				PRODUCT_BUNDLE_IDENTIFIER = nl.mathijskadijk.RswiftTests;
 				PRODUCT_NAME = "$(TARGET_NAME)";
 				SDKROOT = appletvos;
+				SWIFT_VERSION = 5.0;
 				TVOS_DEPLOYMENT_TARGET = 9.1;
 			};
 			name = Release;
@@ -547,17 +751,28 @@
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				ALWAYS_SEARCH_USER_PATHS = NO;
+				CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
 				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
 				CLANG_CXX_LIBRARY = "libc++";
 				CLANG_ENABLE_MODULES = YES;
 				CLANG_ENABLE_OBJC_ARC = YES;
+				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
 				CLANG_WARN_BOOL_CONVERSION = YES;
+				CLANG_WARN_COMMA = YES;
 				CLANG_WARN_CONSTANT_CONVERSION = YES;
+				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
 				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
 				CLANG_WARN_EMPTY_BODY = YES;
 				CLANG_WARN_ENUM_CONVERSION = YES;
+				CLANG_WARN_INFINITE_RECURSION = YES;
 				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
 				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+				CLANG_WARN_STRICT_PROTOTYPES = YES;
+				CLANG_WARN_SUSPICIOUS_MOVE = YES;
 				CLANG_WARN_UNREACHABLE_CODE = YES;
 				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
@@ -595,17 +810,28 @@
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				ALWAYS_SEARCH_USER_PATHS = NO;
+				CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
 				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
 				CLANG_CXX_LIBRARY = "libc++";
 				CLANG_ENABLE_MODULES = YES;
 				CLANG_ENABLE_OBJC_ARC = YES;
+				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
 				CLANG_WARN_BOOL_CONVERSION = YES;
+				CLANG_WARN_COMMA = YES;
 				CLANG_WARN_CONSTANT_CONVERSION = YES;
+				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
 				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
 				CLANG_WARN_EMPTY_BODY = YES;
 				CLANG_WARN_ENUM_CONVERSION = YES;
+				CLANG_WARN_INFINITE_RECURSION = YES;
 				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
 				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+				CLANG_WARN_STRICT_PROTOTYPES = YES;
+				CLANG_WARN_SUSPICIOUS_MOVE = YES;
 				CLANG_WARN_UNREACHABLE_CODE = YES;
 				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
@@ -625,6 +851,7 @@
 				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
 				MTL_ENABLE_DEBUG_INFO = NO;
 				SDKROOT = iphoneos;
+				SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
 				TARGETED_DEVICE_FAMILY = "1,2";
 				VALIDATE_PRODUCT = YES;
 				VERSIONING_SYSTEM = "apple-generic";
@@ -635,7 +862,9 @@
 		D59246631C117A55007F94C7 /* Debug */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
+				APPLICATION_EXTENSION_API_ONLY = YES;
 				CLANG_ENABLE_MODULES = YES;
+				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
 				DEFINES_MODULE = YES;
 				DYLIB_COMPATIBILITY_VERSION = 1;
 				DYLIB_CURRENT_VERSION = 1;
@@ -648,13 +877,16 @@
 				PRODUCT_NAME = Rswift;
 				SKIP_INSTALL = YES;
 				SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+				SWIFT_VERSION = 5.0;
 			};
 			name = Debug;
 		};
 		D59246641C117A55007F94C7 /* Release */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
+				APPLICATION_EXTENSION_API_ONLY = YES;
 				CLANG_ENABLE_MODULES = YES;
+				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
 				DEFINES_MODULE = YES;
 				DYLIB_COMPATIBILITY_VERSION = 1;
 				DYLIB_CURRENT_VERSION = 1;
@@ -666,6 +898,7 @@
 				PRODUCT_BUNDLE_IDENTIFIER = nl.mathijskadijk.rswift.library;
 				PRODUCT_NAME = Rswift;
 				SKIP_INSTALL = YES;
+				SWIFT_VERSION = 5.0;
 			};
 			name = Release;
 		};
@@ -676,6 +909,7 @@
 				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
 				PRODUCT_BUNDLE_IDENTIFIER = nl.mathijskadijk.RswiftTests;
 				PRODUCT_NAME = "$(TARGET_NAME)";
+				SWIFT_VERSION = 5.0;
 			};
 			name = Debug;
 		};
@@ -686,12 +920,22 @@
 				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
 				PRODUCT_BUNDLE_IDENTIFIER = nl.mathijskadijk.RswiftTests;
 				PRODUCT_NAME = "$(TARGET_NAME)";
+				SWIFT_VERSION = 5.0;
 			};
 			name = Release;
 		};
 /* End XCBuildConfiguration section */
 
 /* Begin XCConfigurationList section */
+		2F5FBC4721355A1400A83A69 /* Build configuration list for PBXNativeTarget "Rswift-watchOS" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				2F5FBC4521355A1400A83A69 /* Debug */,
+				2F5FBC4621355A1400A83A69 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
 		806E69A31C42BD9C00DE3A8B /* Build configuration list for PBXNativeTarget "Rswift-tvOS" */ = {
 			isa = XCConfigurationList;
 			buildConfigurations = (
diff --git a/R.swift.Library.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/R.swift.Library.xcodeproj/project.xcworkspace/contents.xcworkspacedata
new file mode 100644
index 0000000..919434a
--- /dev/null
+++ b/R.swift.Library.xcodeproj/project.xcworkspace/contents.xcworkspacedata
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Workspace
+   version = "1.0">
+   <FileRef
+      location = "self:">
+   </FileRef>
+</Workspace>
diff --git a/R.swift.Library.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/R.swift.Library.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
new file mode 100644
index 0000000..18d9810
--- /dev/null
+++ b/R.swift.Library.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>IDEDidComputeMac32BitWarning</key>
+	<true/>
+</dict>
+</plist>
diff --git a/R.swift.Library.xcodeproj/project.xcworkspace/xcshareddata/R.swift.Library.xcscmblueprint b/R.swift.Library.xcodeproj/project.xcworkspace/xcshareddata/R.swift.Library.xcscmblueprint
new file mode 100644
index 0000000..422543d
--- /dev/null
+++ b/R.swift.Library.xcodeproj/project.xcworkspace/xcshareddata/R.swift.Library.xcscmblueprint
@@ -0,0 +1,30 @@
+{
+  "DVTSourceControlWorkspaceBlueprintPrimaryRemoteRepositoryKey" : "E6D66735CE6FC1586FFE099FD28E4FCADA1AAB68",
+  "DVTSourceControlWorkspaceBlueprintWorkingCopyRepositoryLocationsKey" : {
+
+  },
+  "DVTSourceControlWorkspaceBlueprintWorkingCopyStatesKey" : {
+    "768F1F9CC867EF28C17472B184F0AF0781227AAE" : 9223372036854775807,
+    "E6D66735CE6FC1586FFE099FD28E4FCADA1AAB68" : 9223372036854775807
+  },
+  "DVTSourceControlWorkspaceBlueprintIdentifierKey" : "9B2E86CA-CC78-4635-8917-9F1308E5433E",
+  "DVTSourceControlWorkspaceBlueprintWorkingCopyPathsKey" : {
+    "768F1F9CC867EF28C17472B184F0AF0781227AAE" : "",
+    "E6D66735CE6FC1586FFE099FD28E4FCADA1AAB68" : "R.swift.Library\/"
+  },
+  "DVTSourceControlWorkspaceBlueprintNameKey" : "R.swift.Library",
+  "DVTSourceControlWorkspaceBlueprintVersion" : 204,
+  "DVTSourceControlWorkspaceBlueprintRelativePathToProjectKey" : "R.swift.Library.xcodeproj",
+  "DVTSourceControlWorkspaceBlueprintRemoteRepositoriesKey" : [
+    {
+      "DVTSourceControlWorkspaceBlueprintRemoteRepositoryURLKey" : "github.com:mac-cain13\/R.swift.git",
+      "DVTSourceControlWorkspaceBlueprintRemoteRepositorySystemKey" : "com.apple.dt.Xcode.sourcecontrol.Git",
+      "DVTSourceControlWorkspaceBlueprintRemoteRepositoryIdentifierKey" : "768F1F9CC867EF28C17472B184F0AF0781227AAE"
+    },
+    {
+      "DVTSourceControlWorkspaceBlueprintRemoteRepositoryURLKey" : "https:\/\/github.com\/mac-cain13\/R.swift.Library.git",
+      "DVTSourceControlWorkspaceBlueprintRemoteRepositorySystemKey" : "com.apple.dt.Xcode.sourcecontrol.Git",
+      "DVTSourceControlWorkspaceBlueprintRemoteRepositoryIdentifierKey" : "E6D66735CE6FC1586FFE099FD28E4FCADA1AAB68"
+    }
+  ]
+}
\ No newline at end of file
diff --git a/R.swift.Library.xcodeproj/xcshareddata/xcschemes/Rswift-iOS.xcscheme b/R.swift.Library.xcodeproj/xcshareddata/xcschemes/Rswift-iOS.xcscheme
index d887ce4..5d6d23f 100644
--- a/R.swift.Library.xcodeproj/xcshareddata/xcschemes/Rswift-iOS.xcscheme
+++ b/R.swift.Library.xcodeproj/xcshareddata/xcschemes/Rswift-iOS.xcscheme
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <Scheme
-   LastUpgradeVersion = "0710"
+   LastUpgradeVersion = "1100"
    version = "1.3">
    <BuildAction
       parallelizeBuildables = "YES"
@@ -27,6 +27,15 @@
       selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
       selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
       shouldUseLaunchSchemeArgsEnv = "YES">
+      <MacroExpansion>
+         <BuildableReference
+            BuildableIdentifier = "primary"
+            BlueprintIdentifier = "D592464D1C117A55007F94C7"
+            BuildableName = "Rswift.framework"
+            BlueprintName = "Rswift-iOS"
+            ReferencedContainer = "container:R.swift.Library.xcodeproj">
+         </BuildableReference>
+      </MacroExpansion>
       <Testables>
          <TestableReference
             skipped = "NO">
@@ -39,17 +48,6 @@
             </BuildableReference>
          </TestableReference>
       </Testables>
-      <MacroExpansion>
-         <BuildableReference
-            BuildableIdentifier = "primary"
-            BlueprintIdentifier = "D592464D1C117A55007F94C7"
-            BuildableName = "Rswift.framework"
-            BlueprintName = "Rswift-iOS"
-            ReferencedContainer = "container:R.swift.Library.xcodeproj">
-         </BuildableReference>
-      </MacroExpansion>
-      <AdditionalOptions>
-      </AdditionalOptions>
    </TestAction>
    <LaunchAction
       buildConfiguration = "Debug"
@@ -70,8 +68,6 @@
             ReferencedContainer = "container:R.swift.Library.xcodeproj">
          </BuildableReference>
       </MacroExpansion>
-      <AdditionalOptions>
-      </AdditionalOptions>
    </LaunchAction>
    <ProfileAction
       buildConfiguration = "Release"
diff --git a/R.swift.Library.xcodeproj/xcshareddata/xcschemes/Rswift-tvOS.xcscheme b/R.swift.Library.xcodeproj/xcshareddata/xcschemes/Rswift-tvOS.xcscheme
index 4b966db..7e458d0 100644
--- a/R.swift.Library.xcodeproj/xcshareddata/xcschemes/Rswift-tvOS.xcscheme
+++ b/R.swift.Library.xcodeproj/xcshareddata/xcschemes/Rswift-tvOS.xcscheme
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <Scheme
-   LastUpgradeVersion = "0720"
+   LastUpgradeVersion = "1100"
    version = "1.3">
    <BuildAction
       parallelizeBuildables = "YES"
@@ -27,6 +27,15 @@
       selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
       selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
       shouldUseLaunchSchemeArgsEnv = "YES">
+      <MacroExpansion>
+         <BuildableReference
+            BuildableIdentifier = "primary"
+            BlueprintIdentifier = "806E69911C42BD9C00DE3A8B"
+            BuildableName = "Rswift.framework"
+            BlueprintName = "Rswift-tvOS"
+            ReferencedContainer = "container:R.swift.Library.xcodeproj">
+         </BuildableReference>
+      </MacroExpansion>
       <Testables>
          <TestableReference
             skipped = "NO">
@@ -39,17 +48,6 @@
             </BuildableReference>
          </TestableReference>
       </Testables>
-      <MacroExpansion>
-         <BuildableReference
-            BuildableIdentifier = "primary"
-            BlueprintIdentifier = "806E69911C42BD9C00DE3A8B"
-            BuildableName = "Rswift.framework"
-            BlueprintName = "Rswift-tvOS"
-            ReferencedContainer = "container:R.swift.Library.xcodeproj">
-         </BuildableReference>
-      </MacroExpansion>
-      <AdditionalOptions>
-      </AdditionalOptions>
    </TestAction>
    <LaunchAction
       buildConfiguration = "Debug"
@@ -70,8 +68,6 @@
             ReferencedContainer = "container:R.swift.Library.xcodeproj">
          </BuildableReference>
       </MacroExpansion>
-      <AdditionalOptions>
-      </AdditionalOptions>
    </LaunchAction>
    <ProfileAction
       buildConfiguration = "Release"
diff --git a/R.swift.Library.xcodeproj/xcshareddata/xcschemes/Rswift-watchOS.xcscheme b/R.swift.Library.xcodeproj/xcshareddata/xcschemes/Rswift-watchOS.xcscheme
new file mode 100644
index 0000000..a5cfc2b
--- /dev/null
+++ b/R.swift.Library.xcodeproj/xcshareddata/xcschemes/Rswift-watchOS.xcscheme
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Scheme
+   LastUpgradeVersion = "1030"
+   version = "1.3">
+   <BuildAction
+      parallelizeBuildables = "YES"
+      buildImplicitDependencies = "YES">
+      <BuildActionEntries>
+         <BuildActionEntry
+            buildForTesting = "YES"
+            buildForRunning = "YES"
+            buildForProfiling = "YES"
+            buildForArchiving = "YES"
+            buildForAnalyzing = "YES">
+            <BuildableReference
+               BuildableIdentifier = "primary"
+               BlueprintIdentifier = "2F5FBC3F21355A1400A83A69"
+               BuildableName = "Rswift.framework"
+               BlueprintName = "Rswift-watchOS"
+               ReferencedContainer = "container:R.swift.Library.xcodeproj">
+            </BuildableReference>
+         </BuildActionEntry>
+      </BuildActionEntries>
+   </BuildAction>
+   <TestAction
+      buildConfiguration = "Debug"
+      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
+      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
+      shouldUseLaunchSchemeArgsEnv = "YES">
+      <Testables>
+      </Testables>
+      <AdditionalOptions>
+      </AdditionalOptions>
+   </TestAction>
+   <LaunchAction
+      buildConfiguration = "Debug"
+      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
+      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
+      launchStyle = "0"
+      useCustomWorkingDirectory = "NO"
+      ignoresPersistentStateOnLaunch = "NO"
+      debugDocumentVersioning = "YES"
+      debugServiceExtension = "internal"
+      allowLocationSimulation = "YES">
+      <MacroExpansion>
+         <BuildableReference
+            BuildableIdentifier = "primary"
+            BlueprintIdentifier = "2F5FBC3F21355A1400A83A69"
+            BuildableName = "Rswift.framework"
+            BlueprintName = "Rswift-watchOS"
+            ReferencedContainer = "container:R.swift.Library.xcodeproj">
+         </BuildableReference>
+      </MacroExpansion>
+      <AdditionalOptions>
+      </AdditionalOptions>
+   </LaunchAction>
+   <ProfileAction
+      buildConfiguration = "Release"
+      shouldUseLaunchSchemeArgsEnv = "YES"
+      savedToolIdentifier = ""
+      useCustomWorkingDirectory = "NO"
+      debugDocumentVersioning = "YES">
+      <MacroExpansion>
+         <BuildableReference
+            BuildableIdentifier = "primary"
+            BlueprintIdentifier = "2F5FBC3F21355A1400A83A69"
+            BuildableName = "Rswift.framework"
+            BlueprintName = "Rswift-watchOS"
+            ReferencedContainer = "container:R.swift.Library.xcodeproj">
+         </BuildableReference>
+      </MacroExpansion>
+   </ProfileAction>
+   <AnalyzeAction
+      buildConfiguration = "Debug">
+   </AnalyzeAction>
+   <ArchiveAction
+      buildConfiguration = "Release"
+      revealArchiveInOrganizer = "YES">
+   </ArchiveAction>
+</Scheme>
diff --git a/Readme.md b/Readme.md
index 66a5483..4180ed7 100644
--- a/Readme.md
+++ b/Readme.md
@@ -1,6 +1,8 @@
-# R.swift.Library [![Version](https://img.shields.io/cocoapods/v/R.swift.Library.svg?style=flat)](http://cocoapods.org/?q=R.swift.Library) [![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage) [![License](https://img.shields.io/cocoapods/l/R.swift.Library.svg?style=flat)](blob/master/License) ![Platform](https://img.shields.io/cocoapods/p/R.swift.Library.svg?style=flat)
+# R.swift.Library [![Version](https://img.shields.io/cocoapods/v/R.swift.Library.svg?style=flat)](https://cocoapods.org/pods/R.swift) [![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage) [![License](https://img.shields.io/cocoapods/l/R.swift.Library.svg?style=flat)](blob/master/License) ![Platform](https://img.shields.io/cocoapods/p/R.swift.Library.svg?style=flat)
 
-_Library containing types supporting code generated by [R.swift](https://github.com/mac-cain13/R.swift)_
+⚠ As of version 7 of [R.swift](https://github.com/mac-cain13/R.swift), this separate library is no longer needed. R.swift is now a self contained library. 
+
+This repository remains for older versions of R.swift.
 
 ## Why use this?
 
@@ -20,6 +22,15 @@ _**Be aware:** If you just want to use R.swift follow the [installation instruct
 1. Add `github "mac-cain13/R.swift.Library"` to your [Cartfile](https://github.com/Carthage/Carthage/blob/master/Documentation/Artifacts.md#cartfile)
 2. Run `carthage`
 
+### Swift Package Manager (Requires Xcode 11)
+
+1. Open your Xcode project.
+2. Select `File > Swift Packages > Add Package Dependency...`
+3. Paste `https://github.com/mac-cain13/R.swift.Library` to the text field and click on the `Next` button.
+4. Choose appropriate version and click on the `Next` button. (If you need latest one, just click on the `Next` button.)
+5. Confirm that `Rswift` in the Package Product column is checked and your app's name is selected in the Add to Target column.
+6. Click on the `Next` button.
+
 ### Manually
 
 _As an embedded framework using git submodules._