From 35d55c096bb3b78c2107c178668ae1cfc3751f59 Mon Sep 17 00:00:00 2001
From: Muhammed Tanriverdi <muhammed.tanriverdi@tomtom.com>
Date: Mon, 13 Nov 2023 16:59:11 +0100
Subject: [PATCH] feat: introduce spm (#45)

* feat: introduce spm
---
 .github/workflows/build.yaml                  |  38 +-
 .gitignore                                    |   5 +-
 Gemfile => CocoaPods/Gemfile                  |   2 +-
 Gemfile.lock => CocoaPods/Gemfile.lock        |   0
 Podfile => CocoaPods/Podfile                  |   0
 Podfile.lock => CocoaPods/Podfile.lock        |   0
 CocoaPods/README.md                           |  55 ++
 .../project.pbxproj                           | 237 +++----
 .../contents.xcworkspacedata                  |   0
 .../xcshareddata/IDEWorkspaceChecks.plist     |   0
 .../xcschemes/TomTomSDKExamples.xcscheme      |   0
 .../contents.xcworkspacedata                  |   0
 .../xcshareddata/IDEWorkspaceChecks.plist     |   0
 README.md                                     |  63 +-
 SPM/README.md                                 |  11 +
 .../project.pbxproj                           | 629 ++++++++++++++++++
 .../contents.xcworkspacedata                  |   7 +
 .../xcshareddata/IDEWorkspaceChecks.plist     |   8 +
 .../xcshareddata/swiftpm/Package.resolved     |  23 +
 .../xcschemes/TomTomSDKExamples.xcscheme      |  82 +++
 .../TomTomSDKExamplesInfo.plist               |   4 +
 21 files changed, 982 insertions(+), 182 deletions(-)
 rename Gemfile => CocoaPods/Gemfile (52%)
 rename Gemfile.lock => CocoaPods/Gemfile.lock (100%)
 rename Podfile => CocoaPods/Podfile (100%)
 rename Podfile.lock => CocoaPods/Podfile.lock (100%)
 create mode 100644 CocoaPods/README.md
 rename {TomTomSDKExamples.xcodeproj => CocoaPods/TomTomSDKExamples.xcodeproj}/project.pbxproj (66%)
 rename {TomTomSDKExamples.xcodeproj => CocoaPods/TomTomSDKExamples.xcodeproj}/project.xcworkspace/contents.xcworkspacedata (100%)
 rename {TomTomSDKExamples.xcodeproj => CocoaPods/TomTomSDKExamples.xcodeproj}/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist (100%)
 rename {TomTomSDKExamples.xcodeproj => CocoaPods/TomTomSDKExamples.xcodeproj}/xcshareddata/xcschemes/TomTomSDKExamples.xcscheme (100%)
 rename {TomTomSDKExamples.xcworkspace => CocoaPods/TomTomSDKExamples.xcworkspace}/contents.xcworkspacedata (100%)
 rename {TomTomSDKExamples.xcworkspace => CocoaPods/TomTomSDKExamples.xcworkspace}/xcshareddata/IDEWorkspaceChecks.plist (100%)
 create mode 100644 SPM/README.md
 create mode 100644 SPM/TomTomSDKExamples.xcodeproj/project.pbxproj
 create mode 100644 SPM/TomTomSDKExamples.xcodeproj/project.xcworkspace/contents.xcworkspacedata
 create mode 100644 SPM/TomTomSDKExamples.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
 create mode 100644 SPM/TomTomSDKExamples.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved
 create mode 100644 SPM/TomTomSDKExamples.xcodeproj/xcshareddata/xcschemes/TomTomSDKExamples.xcscheme
 rename TomTomSDKExamplesInfo.plist => TomTomSDKExamples/TomTomSDKExamplesInfo.plist (82%)

diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml
index 704c0e9..569e7a4 100644
--- a/.github/workflows/build.yaml
+++ b/.github/workflows/build.yaml
@@ -7,22 +7,52 @@ name: Buid iOS app
 on:
   workflow_call:
 
+env:
+  spm_dir: './SPM'
+  cocoapods_dir: './CocoaPods'
+  platform: 'iOS Simulator'
+  device_name: 'iPhone 14'
+  ios_version: '16.4'
+
 # clear out default permissions
 permissions: {}
 
 jobs:
-  build:
-    name: Buid iOS app
+  build-spm:
+    name: Buid iOS app - SPM
     permissions:
       contents: read
-    runs-on: macos-latest
+    runs-on: macos-13
+    defaults:
+      run:
+        working-directory: ${{ env.spm_dir }}
     steps:
       - uses: actions/checkout@v3
 
+      - name: Build iOS app
+        run: >
+          xcodebuild
+          -project 'TomTomSDKExamples.xcodeproj'
+          -scheme 'TomTomSDKExamples'
+          -destination 'platform=${{ env.platform }},name=${{ env.device_name }},OS=${{ env.ios_version }}'
+
+  build-cocoapods:
+    name: Buid iOS app - CocoaPods
+    permissions:
+      contents: read
+    runs-on: macos-13
+    defaults:
+      run:
+        working-directory:  ${{ env.cocoapods_dir }}
+    steps:
+      - uses: actions/checkout@v4
+
       - name: Setup Ruby
         uses: ruby/setup-ruby@v1
         with:
           bundler-cache: true
+        env:
+          BUNDLE_GEMFILE: '${{ env.cocoapods_dir }}/Gemfile'
 
       - name: Add Cocoapods repository
         # Ensure we have repos dir created
@@ -39,4 +69,4 @@ jobs:
           xcodebuild
           -workspace 'TomTomSDKExamples.xcworkspace'
           -scheme 'TomTomSDKExamples'
-          -destination 'platform=iOS Simulator,name=iPhone 14'
+          -destination 'platform=${{ env.platform }},name=${{ env.device_name }},OS=${{ env.ios_version }}'
diff --git a/.gitignore b/.gitignore
index 1bd0bad..0f49214 100644
--- a/.gitignore
+++ b/.gitignore
@@ -93,7 +93,4 @@ iOSInjectionProject/
 *.DS_Store
 
 # Bundle gems 
-**/bundle
-
-## Offline Map files #
-Map/
+**/bundle
\ No newline at end of file
diff --git a/Gemfile b/CocoaPods/Gemfile
similarity index 52%
rename from Gemfile
rename to CocoaPods/Gemfile
index 46dc0ab..21e7ae7 100644
--- a/Gemfile
+++ b/CocoaPods/Gemfile
@@ -1,4 +1,4 @@
 source 'https://rubygems.org'
-ruby "~>#{File.read(File.join(__dir__, ".ruby-version")).strip}"
+ruby "~>#{File.read(File.join(__dir__, "../.ruby-version")).strip}"
 gem "cocoapods", "1.11.3"
 gem "cocoapods-art"
diff --git a/Gemfile.lock b/CocoaPods/Gemfile.lock
similarity index 100%
rename from Gemfile.lock
rename to CocoaPods/Gemfile.lock
diff --git a/Podfile b/CocoaPods/Podfile
similarity index 100%
rename from Podfile
rename to CocoaPods/Podfile
diff --git a/Podfile.lock b/CocoaPods/Podfile.lock
similarity index 100%
rename from Podfile.lock
rename to CocoaPods/Podfile.lock
diff --git a/CocoaPods/README.md b/CocoaPods/README.md
new file mode 100644
index 0000000..0997950
--- /dev/null
+++ b/CocoaPods/README.md
@@ -0,0 +1,55 @@
+## Development setup
+
+Once you have gained access, set up the development environment by following:
+
+1. We recommend using `rbenv` to handle `ruby` selection/installation.
+   1. Install `rbenv`
+   ```zsh
+   brew install rbenv
+   ```
+   2. Clone the [tomtom-navigation-ios-examples] repository
+   ```zsh
+   git clone git@github.com:tomtom-international/tomtom-navigation-ios-examples.git
+   ```   
+   3. Change directory to the related folder of the recently cloned repository and install `ruby` via `rbenv`
+   ```zsh
+   cd tomtom-navigation-ios-examples/CocoaPods
+   rbenv install
+   ```
+   4. Load `rbenv` to your shell
+   ```zsh
+   echo 'eval "$(rbenv init - zsh)"' >> ~/.zshrc
+   ```
+   Above command assumes that `zsh` is being used. If a different shell is being used, then you can find 
+   commands for most common shells in [rbenv documentation].
+
+   5. Update `bundler`
+   ```zsh
+   gem install bundler
+   ```
+   6. ***reload*** your shell so the `rbenv` can extend `PATH` accordingly.
+
+2. Install project's `gem` dependencies via `bundler`
+   ```zsh
+   bundle install
+   ```
+
+3. Add a reference to the [CocoaPods] private repository:
+   ```zsh
+   bundle exec pod repo-art add tomtom-sdk-cocoapods "https://repositories.tomtom.com/artifactory/api/pods/cocoapods"
+   ```
+
+4. Install the dependencies by executing the following command in **the project folder**.
+    ```zsh
+    bundle exec pod install
+    ```
+
+5. To update the SDK version, run the command:
+    ```zsh
+    bundle exec pod repo-art update tomtom-sdk-cocoapods
+    ```
+6. Open the project’s `xcworkspace` and start developing your awesome application.
+
+[CocoaPods]: (https://guides.cocoapods.org/using/getting-started.html)
+[rbenv documentation]: https://github.com/rbenv/rbenv#readme
+[tomtom-navigation-ios-examples]: https://github.com/tomtom-international/tomtom-navigation-ios-examples
\ No newline at end of file
diff --git a/TomTomSDKExamples.xcodeproj/project.pbxproj b/CocoaPods/TomTomSDKExamples.xcodeproj/project.pbxproj
similarity index 66%
rename from TomTomSDKExamples.xcodeproj/project.pbxproj
rename to CocoaPods/TomTomSDKExamples.xcodeproj/project.pbxproj
index efc5849..f3d0659 100644
--- a/TomTomSDKExamples.xcodeproj/project.pbxproj
+++ b/CocoaPods/TomTomSDKExamples.xcodeproj/project.pbxproj
@@ -8,50 +8,51 @@
 
 /* Begin PBXBuildFile section */
 		351BCD631BB328C869AA5591 /* Pods_TomTomSDKExamples.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 182816C2A2C71B776131AB66 /* Pods_TomTomSDKExamples.framework */; };
-		9D07FD2C29FABFB6008577CD /* OnlineNavigationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D07FD2A29FABFB6008577CD /* OnlineNavigationView.swift */; };
-		9D07FD2D29FABFB6008577CD /* OnlineNavigationContent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D07FD2B29FABFB6008577CD /* OnlineNavigationContent.swift */; };
-		9D2F394D29A379FC0093F702 /* TomTomSDKExamplesApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D2F394C29A379FC0093F702 /* TomTomSDKExamplesApp.swift */; };
-		9D2F395129A379FE0093F702 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 9D2F395029A379FE0093F702 /* Assets.xcassets */; };
-		9D2F395429A379FE0093F702 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 9D2F395329A379FE0093F702 /* Preview Assets.xcassets */; };
-		9D2F396B29A388170093F702 /* MainMenu.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D2F396A29A388170093F702 /* MainMenu.swift */; };
-		9D2F397429A389010093F702 /* MapExamplesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D2F397329A389010093F702 /* MapExamplesView.swift */; };
-		9D2F397629A389110093F702 /* NavigationExamplesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D2F397529A389110093F702 /* NavigationExamplesView.swift */; };
-		9D2F397A29A3892D0093F702 /* RoutingExamplesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D2F397929A3892D0093F702 /* RoutingExamplesView.swift */; };
-		9D2F397C29A389390093F702 /* SearchExamplesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D2F397B29A389390093F702 /* SearchExamplesView.swift */; };
-		9D2F398029A3896D0093F702 /* README.md in Resources */ = {isa = PBXBuildFile; fileRef = 9D2F397F29A3896D0093F702 /* README.md */; };
-		9D2F398329A38B1A0093F702 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 9D2F398229A38B1A0093F702 /* Localizable.strings */; };
-		9D2F398729A3C58F0093F702 /* Colors.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 9D2F398629A3C58F0093F702 /* Colors.xcassets */; };
-		9D2F398A29A3C6830093F702 /* Resource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D2F398929A3C6830093F702 /* Resource.swift */; };
-		9D6B2FD629A76E72008CB4A6 /* Keys.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D6B2FD529A76E72008CB4A6 /* Keys.swift */; };
-		9D6B2FD829A76EE7008CB4A6 /* TomTomServices.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D6B2FD729A76EE7008CB4A6 /* TomTomServices.swift */; };
-		9DB8B46529E5731900E07909 /* GPX-Amsterdam.gpx in Resources */ = {isa = PBXBuildFile; fileRef = 9DB8B46429E5731900E07909 /* GPX-Amsterdam.gpx */; };
-		9DC6205F29A5179000598A05 /* BackButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9DC6205E29A5179000598A05 /* BackButton.swift */; };
+		9D0D46972AF9325B009E9B53 /* Colors.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 9D0D467C2AF9325B009E9B53 /* Colors.xcassets */; };
+		9D0D46982AF9325B009E9B53 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 9D0D467D2AF9325B009E9B53 /* Assets.xcassets */; };
+		9D0D46992AF9325B009E9B53 /* GPX-Amsterdam.gpx in Resources */ = {isa = PBXBuildFile; fileRef = 9D0D467E2AF9325B009E9B53 /* GPX-Amsterdam.gpx */; };
+		9D0D469A2AF9325B009E9B53 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 9D0D467F2AF9325B009E9B53 /* Localizable.strings */; };
+		9D0D469B2AF9325B009E9B53 /* TomTomServices.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D0D46812AF9325B009E9B53 /* TomTomServices.swift */; };
+		9D0D469C2AF9325B009E9B53 /* Keys.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D0D46822AF9325B009E9B53 /* Keys.swift */; };
+		9D0D469D2AF9325B009E9B53 /* BackButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D0D46842AF9325B009E9B53 /* BackButton.swift */; };
+		9D0D469E2AF9325B009E9B53 /* Resource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D0D46852AF9325B009E9B53 /* Resource.swift */; };
+		9D0D469F2AF9325B009E9B53 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 9D0D46872AF9325B009E9B53 /* Preview Assets.xcassets */; };
+		9D0D46A02AF9325B009E9B53 /* MapExamplesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D0D468A2AF9325B009E9B53 /* MapExamplesView.swift */; };
+		9D0D46A12AF9325B009E9B53 /* MainMenu.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D0D468B2AF9325B009E9B53 /* MainMenu.swift */; };
+		9D0D46A22AF9325B009E9B53 /* NavigationExamplesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D0D468D2AF9325B009E9B53 /* NavigationExamplesView.swift */; };
+		9D0D46A32AF9325B009E9B53 /* SearchExamplesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D0D468F2AF9325B009E9B53 /* SearchExamplesView.swift */; };
+		9D0D46A42AF9325B009E9B53 /* RoutingExamplesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D0D46912AF9325B009E9B53 /* RoutingExamplesView.swift */; };
+		9D0D46A52AF9325B009E9B53 /* OnlineNavigationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D0D46932AF9325B009E9B53 /* OnlineNavigationView.swift */; };
+		9D0D46A62AF9325B009E9B53 /* README.md in Resources */ = {isa = PBXBuildFile; fileRef = 9D0D46942AF9325B009E9B53 /* README.md */; };
+		9D0D46A72AF9325B009E9B53 /* OnlineNavigationContent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D0D46952AF9325B009E9B53 /* OnlineNavigationContent.swift */; };
+		9D0D46A82AF9325B009E9B53 /* TomTomSDKExamplesApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D0D46962AF9325B009E9B53 /* TomTomSDKExamplesApp.swift */; };
+		9D0D475D2AF9421B009E9B53 /* TomTomSDKExamplesInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 9D0D475C2AF9421B009E9B53 /* TomTomSDKExamplesInfo.plist */; };
 /* End PBXBuildFile section */
 
 /* Begin PBXFileReference section */
 		182816C2A2C71B776131AB66 /* Pods_TomTomSDKExamples.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_TomTomSDKExamples.framework; sourceTree = BUILT_PRODUCTS_DIR; };
 		530B2700A4400EB33E5DE5BB /* Pods-TomTomSDKExamples.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-TomTomSDKExamples.release.xcconfig"; path = "Target Support Files/Pods-TomTomSDKExamples/Pods-TomTomSDKExamples.release.xcconfig"; sourceTree = "<group>"; };
 		9AB4C03BCE89E080FDCF7166 /* Pods-TomTomSDKExamples.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-TomTomSDKExamples.debug.xcconfig"; path = "Target Support Files/Pods-TomTomSDKExamples/Pods-TomTomSDKExamples.debug.xcconfig"; sourceTree = "<group>"; };
-		9D07FD2A29FABFB6008577CD /* OnlineNavigationView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OnlineNavigationView.swift; sourceTree = "<group>"; };
-		9D07FD2B29FABFB6008577CD /* OnlineNavigationContent.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OnlineNavigationContent.swift; sourceTree = "<group>"; };
-		9D2A34DE29CDA54F00BF8884 /* TomTomSDKExamplesInfo.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = TomTomSDKExamplesInfo.plist; sourceTree = SOURCE_ROOT; };
+		9D0D467C2AF9325B009E9B53 /* Colors.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Colors.xcassets; sourceTree = "<group>"; };
+		9D0D467D2AF9325B009E9B53 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
+		9D0D467E2AF9325B009E9B53 /* GPX-Amsterdam.gpx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = "GPX-Amsterdam.gpx"; sourceTree = "<group>"; };
+		9D0D467F2AF9325B009E9B53 /* Localizable.strings */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; path = Localizable.strings; sourceTree = "<group>"; };
+		9D0D46812AF9325B009E9B53 /* TomTomServices.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TomTomServices.swift; sourceTree = "<group>"; };
+		9D0D46822AF9325B009E9B53 /* Keys.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Keys.swift; sourceTree = "<group>"; };
+		9D0D46842AF9325B009E9B53 /* BackButton.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BackButton.swift; sourceTree = "<group>"; };
+		9D0D46852AF9325B009E9B53 /* Resource.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Resource.swift; sourceTree = "<group>"; };
+		9D0D46872AF9325B009E9B53 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = "<group>"; };
+		9D0D468A2AF9325B009E9B53 /* MapExamplesView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MapExamplesView.swift; sourceTree = "<group>"; };
+		9D0D468B2AF9325B009E9B53 /* MainMenu.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MainMenu.swift; sourceTree = "<group>"; };
+		9D0D468D2AF9325B009E9B53 /* NavigationExamplesView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NavigationExamplesView.swift; sourceTree = "<group>"; };
+		9D0D468F2AF9325B009E9B53 /* SearchExamplesView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SearchExamplesView.swift; sourceTree = "<group>"; };
+		9D0D46912AF9325B009E9B53 /* RoutingExamplesView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RoutingExamplesView.swift; sourceTree = "<group>"; };
+		9D0D46932AF9325B009E9B53 /* OnlineNavigationView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OnlineNavigationView.swift; sourceTree = "<group>"; };
+		9D0D46942AF9325B009E9B53 /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = "<group>"; };
+		9D0D46952AF9325B009E9B53 /* OnlineNavigationContent.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OnlineNavigationContent.swift; sourceTree = "<group>"; };
+		9D0D46962AF9325B009E9B53 /* TomTomSDKExamplesApp.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TomTomSDKExamplesApp.swift; sourceTree = "<group>"; };
+		9D0D475C2AF9421B009E9B53 /* TomTomSDKExamplesInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = TomTomSDKExamplesInfo.plist; sourceTree = "<group>"; };
 		9D2F394929A379FC0093F702 /* TomTomSDKExamples.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = TomTomSDKExamples.app; sourceTree = BUILT_PRODUCTS_DIR; };
-		9D2F394C29A379FC0093F702 /* TomTomSDKExamplesApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TomTomSDKExamplesApp.swift; sourceTree = "<group>"; };
-		9D2F395029A379FE0093F702 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
-		9D2F395329A379FE0093F702 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = "<group>"; };
-		9D2F396A29A388170093F702 /* MainMenu.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainMenu.swift; sourceTree = "<group>"; };
-		9D2F397329A389010093F702 /* MapExamplesView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapExamplesView.swift; sourceTree = "<group>"; };
-		9D2F397529A389110093F702 /* NavigationExamplesView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NavigationExamplesView.swift; sourceTree = "<group>"; };
-		9D2F397929A3892D0093F702 /* RoutingExamplesView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoutingExamplesView.swift; sourceTree = "<group>"; };
-		9D2F397B29A389390093F702 /* SearchExamplesView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchExamplesView.swift; sourceTree = "<group>"; };
-		9D2F397F29A3896D0093F702 /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = "<group>"; };
-		9D2F398229A38B1A0093F702 /* Localizable.strings */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; path = Localizable.strings; sourceTree = "<group>"; };
-		9D2F398629A3C58F0093F702 /* Colors.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Colors.xcassets; sourceTree = "<group>"; };
-		9D2F398929A3C6830093F702 /* Resource.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Resource.swift; sourceTree = "<group>"; };
-		9D6B2FD529A76E72008CB4A6 /* Keys.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Keys.swift; sourceTree = "<group>"; };
-		9D6B2FD729A76EE7008CB4A6 /* TomTomServices.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TomTomServices.swift; sourceTree = "<group>"; };
-		9DB8B46429E5731900E07909 /* GPX-Amsterdam.gpx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = "GPX-Amsterdam.gpx"; sourceTree = "<group>"; };
-		9DC6205E29A5179000598A05 /* BackButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BackButton.swift; sourceTree = "<group>"; };
 /* End PBXFileReference section */
 
 /* Begin PBXFrameworksBuildPhase section */
@@ -83,128 +84,129 @@
 			name = Frameworks;
 			sourceTree = "<group>";
 		};
-		9D2F394029A379FC0093F702 = {
+		9D0D467A2AF9325B009E9B53 /* TomTomSDKExamples */ = {
 			isa = PBXGroup;
 			children = (
-				9D2F394B29A379FC0093F702 /* TomTomSDKExamples */,
-				9D2F394A29A379FC0093F702 /* Products */,
-				5D3F7FDDB19FBE13004B1041 /* Pods */,
-				8C16E916058AB376AE1D4195 /* Frameworks */,
+				9D0D467B2AF9325B009E9B53 /* Resources */,
+				9D0D46802AF9325B009E9B53 /* Utils */,
+				9D0D46862AF9325B009E9B53 /* Preview Content */,
+				9D0D46882AF9325B009E9B53 /* Examples */,
+				9D0D46962AF9325B009E9B53 /* TomTomSDKExamplesApp.swift */,
+				9D0D475C2AF9421B009E9B53 /* TomTomSDKExamplesInfo.plist */,
 			);
+			name = TomTomSDKExamples;
+			path = ../TomTomSDKExamples;
 			sourceTree = "<group>";
 		};
-		9D2F394A29A379FC0093F702 /* Products */ = {
+		9D0D467B2AF9325B009E9B53 /* Resources */ = {
 			isa = PBXGroup;
 			children = (
-				9D2F394929A379FC0093F702 /* TomTomSDKExamples.app */,
+				9D0D467C2AF9325B009E9B53 /* Colors.xcassets */,
+				9D0D467D2AF9325B009E9B53 /* Assets.xcassets */,
+				9D0D467E2AF9325B009E9B53 /* GPX-Amsterdam.gpx */,
+				9D0D467F2AF9325B009E9B53 /* Localizable.strings */,
 			);
-			name = Products;
+			path = Resources;
 			sourceTree = "<group>";
 		};
-		9D2F394B29A379FC0093F702 /* TomTomSDKExamples */ = {
+		9D0D46802AF9325B009E9B53 /* Utils */ = {
 			isa = PBXGroup;
 			children = (
-				9D2A34DE29CDA54F00BF8884 /* TomTomSDKExamplesInfo.plist */,
-				9D2F395229A379FE0093F702 /* Preview Content */,
-				9D2F398129A38A120093F702 /* Resources */,
-				9D2F398829A3C66F0093F702 /* Utils */,
-				9D2F396C29A3885E0093F702 /* Examples */,
-				9D2F394C29A379FC0093F702 /* TomTomSDKExamplesApp.swift */,
-			);
-			path = TomTomSDKExamples;
+				9D0D46812AF9325B009E9B53 /* TomTomServices.swift */,
+				9D0D46822AF9325B009E9B53 /* Keys.swift */,
+				9D0D46832AF9325B009E9B53 /* UI Components */,
+				9D0D46852AF9325B009E9B53 /* Resource.swift */,
+			);
+			path = Utils;
 			sourceTree = "<group>";
 		};
-		9D2F395229A379FE0093F702 /* Preview Content */ = {
+		9D0D46832AF9325B009E9B53 /* UI Components */ = {
 			isa = PBXGroup;
 			children = (
-				9D2F395329A379FE0093F702 /* Preview Assets.xcassets */,
+				9D0D46842AF9325B009E9B53 /* BackButton.swift */,
 			);
-			path = "Preview Content";
+			path = "UI Components";
 			sourceTree = "<group>";
 		};
-		9D2F396C29A3885E0093F702 /* Examples */ = {
+		9D0D46862AF9325B009E9B53 /* Preview Content */ = {
 			isa = PBXGroup;
 			children = (
-				9D2F396A29A388170093F702 /* MainMenu.swift */,
-				9D2F396D29A388660093F702 /* Maps */,
-				9D2F396E29A3886F0093F702 /* Navigation */,
-				9D2F397129A388850093F702 /* Routing */,
-				9D2F397029A3887E0093F702 /* Search */,
-				9D2F396F29A388780093F702 /* UseCase */,
+				9D0D46872AF9325B009E9B53 /* Preview Assets.xcassets */,
 			);
-			path = Examples;
+			path = "Preview Content";
 			sourceTree = "<group>";
 		};
-		9D2F396D29A388660093F702 /* Maps */ = {
+		9D0D46882AF9325B009E9B53 /* Examples */ = {
 			isa = PBXGroup;
 			children = (
-				9D2F397329A389010093F702 /* MapExamplesView.swift */,
+				9D0D46892AF9325B009E9B53 /* Maps */,
+				9D0D468B2AF9325B009E9B53 /* MainMenu.swift */,
+				9D0D468C2AF9325B009E9B53 /* Navigation */,
+				9D0D468E2AF9325B009E9B53 /* Search */,
+				9D0D46902AF9325B009E9B53 /* Routing */,
+				9D0D46922AF9325B009E9B53 /* UseCase */,
 			);
-			path = Maps;
+			path = Examples;
 			sourceTree = "<group>";
 		};
-		9D2F396E29A3886F0093F702 /* Navigation */ = {
+		9D0D46892AF9325B009E9B53 /* Maps */ = {
 			isa = PBXGroup;
 			children = (
-				9D2F397529A389110093F702 /* NavigationExamplesView.swift */,
+				9D0D468A2AF9325B009E9B53 /* MapExamplesView.swift */,
 			);
-			path = Navigation;
+			path = Maps;
 			sourceTree = "<group>";
 		};
-		9D2F396F29A388780093F702 /* UseCase */ = {
+		9D0D468C2AF9325B009E9B53 /* Navigation */ = {
 			isa = PBXGroup;
 			children = (
-				9D2F397F29A3896D0093F702 /* README.md */,
-				9D07FD2A29FABFB6008577CD /* OnlineNavigationView.swift */,
-				9D07FD2B29FABFB6008577CD /* OnlineNavigationContent.swift */,
+				9D0D468D2AF9325B009E9B53 /* NavigationExamplesView.swift */,
 			);
-			path = UseCase;
+			path = Navigation;
 			sourceTree = "<group>";
 		};
-		9D2F397029A3887E0093F702 /* Search */ = {
+		9D0D468E2AF9325B009E9B53 /* Search */ = {
 			isa = PBXGroup;
 			children = (
-				9D2F397B29A389390093F702 /* SearchExamplesView.swift */,
+				9D0D468F2AF9325B009E9B53 /* SearchExamplesView.swift */,
 			);
 			path = Search;
 			sourceTree = "<group>";
 		};
-		9D2F397129A388850093F702 /* Routing */ = {
+		9D0D46902AF9325B009E9B53 /* Routing */ = {
 			isa = PBXGroup;
 			children = (
-				9D2F397929A3892D0093F702 /* RoutingExamplesView.swift */,
+				9D0D46912AF9325B009E9B53 /* RoutingExamplesView.swift */,
 			);
 			path = Routing;
 			sourceTree = "<group>";
 		};
-		9D2F398129A38A120093F702 /* Resources */ = {
+		9D0D46922AF9325B009E9B53 /* UseCase */ = {
 			isa = PBXGroup;
 			children = (
-				9DB8B46429E5731900E07909 /* GPX-Amsterdam.gpx */,
-				9D2F395029A379FE0093F702 /* Assets.xcassets */,
-				9D2F398629A3C58F0093F702 /* Colors.xcassets */,
-				9D2F398229A38B1A0093F702 /* Localizable.strings */,
+				9D0D46932AF9325B009E9B53 /* OnlineNavigationView.swift */,
+				9D0D46942AF9325B009E9B53 /* README.md */,
+				9D0D46952AF9325B009E9B53 /* OnlineNavigationContent.swift */,
 			);
-			path = Resources;
+			path = UseCase;
 			sourceTree = "<group>";
 		};
-		9D2F398829A3C66F0093F702 /* Utils */ = {
+		9D2F394029A379FC0093F702 = {
 			isa = PBXGroup;
 			children = (
-				9D2F398929A3C6830093F702 /* Resource.swift */,
-				9D6B2FD529A76E72008CB4A6 /* Keys.swift */,
-				9D6B2FD729A76EE7008CB4A6 /* TomTomServices.swift */,
-				9DC6205D29A516E700598A05 /* UI Components */,
+				9D0D467A2AF9325B009E9B53 /* TomTomSDKExamples */,
+				9D2F394A29A379FC0093F702 /* Products */,
+				5D3F7FDDB19FBE13004B1041 /* Pods */,
+				8C16E916058AB376AE1D4195 /* Frameworks */,
 			);
-			path = Utils;
 			sourceTree = "<group>";
 		};
-		9DC6205D29A516E700598A05 /* UI Components */ = {
+		9D2F394A29A379FC0093F702 /* Products */ = {
 			isa = PBXGroup;
 			children = (
-				9DC6205E29A5179000598A05 /* BackButton.swift */,
+				9D2F394929A379FC0093F702 /* TomTomSDKExamples.app */,
 			);
-			path = "UI Components";
+			name = Products;
 			sourceTree = "<group>";
 		};
 /* End PBXGroup section */
@@ -267,12 +269,13 @@
 			isa = PBXResourcesBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
-				9D2F398729A3C58F0093F702 /* Colors.xcassets in Resources */,
-				9D2F398029A3896D0093F702 /* README.md in Resources */,
-				9D2F398329A38B1A0093F702 /* Localizable.strings in Resources */,
-				9DB8B46529E5731900E07909 /* GPX-Amsterdam.gpx in Resources */,
-				9D2F395429A379FE0093F702 /* Preview Assets.xcassets in Resources */,
-				9D2F395129A379FE0093F702 /* Assets.xcassets in Resources */,
+				9D0D46A62AF9325B009E9B53 /* README.md in Resources */,
+				9D0D46992AF9325B009E9B53 /* GPX-Amsterdam.gpx in Resources */,
+				9D0D469A2AF9325B009E9B53 /* Localizable.strings in Resources */,
+				9D0D469F2AF9325B009E9B53 /* Preview Assets.xcassets in Resources */,
+				9D0D46982AF9325B009E9B53 /* Assets.xcassets in Resources */,
+				9D0D46972AF9325B009E9B53 /* Colors.xcassets in Resources */,
+				9D0D475D2AF9421B009E9B53 /* TomTomSDKExamplesInfo.plist in Resources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -325,18 +328,18 @@
 			isa = PBXSourcesBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
-				9D2F398A29A3C6830093F702 /* Resource.swift in Sources */,
-				9D2F397429A389010093F702 /* MapExamplesView.swift in Sources */,
-				9D6B2FD629A76E72008CB4A6 /* Keys.swift in Sources */,
-				9D2F397C29A389390093F702 /* SearchExamplesView.swift in Sources */,
-				9D07FD2C29FABFB6008577CD /* OnlineNavigationView.swift in Sources */,
-				9D07FD2D29FABFB6008577CD /* OnlineNavigationContent.swift in Sources */,
-				9D2F397629A389110093F702 /* NavigationExamplesView.swift in Sources */,
-				9DC6205F29A5179000598A05 /* BackButton.swift in Sources */,
-				9D2F396B29A388170093F702 /* MainMenu.swift in Sources */,
-				9D2F397A29A3892D0093F702 /* RoutingExamplesView.swift in Sources */,
-				9D2F394D29A379FC0093F702 /* TomTomSDKExamplesApp.swift in Sources */,
-				9D6B2FD829A76EE7008CB4A6 /* TomTomServices.swift in Sources */,
+				9D0D46A22AF9325B009E9B53 /* NavigationExamplesView.swift in Sources */,
+				9D0D46A42AF9325B009E9B53 /* RoutingExamplesView.swift in Sources */,
+				9D0D469B2AF9325B009E9B53 /* TomTomServices.swift in Sources */,
+				9D0D46A82AF9325B009E9B53 /* TomTomSDKExamplesApp.swift in Sources */,
+				9D0D46A12AF9325B009E9B53 /* MainMenu.swift in Sources */,
+				9D0D46A32AF9325B009E9B53 /* SearchExamplesView.swift in Sources */,
+				9D0D46A02AF9325B009E9B53 /* MapExamplesView.swift in Sources */,
+				9D0D469E2AF9325B009E9B53 /* Resource.swift in Sources */,
+				9D0D469C2AF9325B009E9B53 /* Keys.swift in Sources */,
+				9D0D469D2AF9325B009E9B53 /* BackButton.swift in Sources */,
+				9D0D46A72AF9325B009E9B53 /* OnlineNavigationContent.swift in Sources */,
+				9D0D46A52AF9325B009E9B53 /* OnlineNavigationView.swift in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -465,11 +468,11 @@
 				ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
 				CODE_SIGN_STYLE = Manual;
 				CURRENT_PROJECT_VERSION = 1;
-				DEVELOPMENT_ASSET_PATHS = "\"TomTomSDKExamples/Preview Content\"";
+				DEVELOPMENT_ASSET_PATHS = "\"../TomTomSDKExamples/Preview Content\"";
 				DEVELOPMENT_TEAM = "";
 				ENABLE_PREVIEWS = YES;
 				GENERATE_INFOPLIST_FILE = YES;
-				INFOPLIST_FILE = TomTomSDKExamplesInfo.plist;
+				INFOPLIST_FILE = ../TomTomSDKExamples/TomTomSDKExamplesInfo.plist;
 				INFOPLIST_KEY_NSLocationAlwaysAndWhenInUseUsageDescription = "Application requires GPS to display your position on map";
 				INFOPLIST_KEY_NSLocationAlwaysUsageDescription = "Application requires GPS to display your position on map";
 				INFOPLIST_KEY_NSLocationWhenInUseUsageDescription = "Application requires GPS to display your position on map";
@@ -500,11 +503,11 @@
 				ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
 				CODE_SIGN_STYLE = Manual;
 				CURRENT_PROJECT_VERSION = 1;
-				DEVELOPMENT_ASSET_PATHS = "\"TomTomSDKExamples/Preview Content\"";
+				DEVELOPMENT_ASSET_PATHS = "\"../TomTomSDKExamples/Preview Content\"";
 				DEVELOPMENT_TEAM = "";
 				ENABLE_PREVIEWS = YES;
 				GENERATE_INFOPLIST_FILE = YES;
-				INFOPLIST_FILE = TomTomSDKExamplesInfo.plist;
+				INFOPLIST_FILE = ../TomTomSDKExamples/TomTomSDKExamplesInfo.plist;
 				INFOPLIST_KEY_NSLocationAlwaysAndWhenInUseUsageDescription = "Application requires GPS to display your position on map";
 				INFOPLIST_KEY_NSLocationAlwaysUsageDescription = "Application requires GPS to display your position on map";
 				INFOPLIST_KEY_NSLocationWhenInUseUsageDescription = "Application requires GPS to display your position on map";
diff --git a/TomTomSDKExamples.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/CocoaPods/TomTomSDKExamples.xcodeproj/project.xcworkspace/contents.xcworkspacedata
similarity index 100%
rename from TomTomSDKExamples.xcodeproj/project.xcworkspace/contents.xcworkspacedata
rename to CocoaPods/TomTomSDKExamples.xcodeproj/project.xcworkspace/contents.xcworkspacedata
diff --git a/TomTomSDKExamples.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/CocoaPods/TomTomSDKExamples.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
similarity index 100%
rename from TomTomSDKExamples.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
rename to CocoaPods/TomTomSDKExamples.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
diff --git a/TomTomSDKExamples.xcodeproj/xcshareddata/xcschemes/TomTomSDKExamples.xcscheme b/CocoaPods/TomTomSDKExamples.xcodeproj/xcshareddata/xcschemes/TomTomSDKExamples.xcscheme
similarity index 100%
rename from TomTomSDKExamples.xcodeproj/xcshareddata/xcschemes/TomTomSDKExamples.xcscheme
rename to CocoaPods/TomTomSDKExamples.xcodeproj/xcshareddata/xcschemes/TomTomSDKExamples.xcscheme
diff --git a/TomTomSDKExamples.xcworkspace/contents.xcworkspacedata b/CocoaPods/TomTomSDKExamples.xcworkspace/contents.xcworkspacedata
similarity index 100%
rename from TomTomSDKExamples.xcworkspace/contents.xcworkspacedata
rename to CocoaPods/TomTomSDKExamples.xcworkspace/contents.xcworkspacedata
diff --git a/TomTomSDKExamples.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/CocoaPods/TomTomSDKExamples.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
similarity index 100%
rename from TomTomSDKExamples.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
rename to CocoaPods/TomTomSDKExamples.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
diff --git a/README.md b/README.md
index 01e2e29..da3497d 100644
--- a/README.md
+++ b/README.md
@@ -10,57 +10,11 @@ Hello and welcome to this repository with examples showcasing the [TomTom Naviga
 
 ## Development setup
 
-Once you have gained access, set up the development environment by following:
+Before beginning, make sure you have Xcode 13 or 14 installed.
 
-1. Install Xcode if you don't already have it. Supported versions of Xcode are 13 to 14, inclusive.
-
-2. We recommend using `rbenv` to handle `ruby` selection/installation.
-   1. Install `rbenv`
-   ```zsh
-   brew install rbenv
-   ```
-   2. Clone the [tomtom-navigation-ios-examples] repository
-   ```zsh
-   git clone https://github.com/tomtom-international/tomtom-navigation-ios-examples.git
-   ```   
-   3. Change directory to the recently cloned repository and install `ruby` via `rbenv`
-   ```zsh
-   cd tomtom-navigation-ios-examples
-   rbenv install
-   ```
-   4. Load `rbenv` to your shell
-   ```zsh
-   echo 'eval "$(rbenv init - zsh)"' >> ~/.zshrc
-   ```
-   Above command assumes that `zsh` is being used. If a different shell is being used, then you can find 
-   commands for most common shells in [rbenv documentation].
-
-   5. Update `bundler`
-   ```zsh
-   gem install bundler
-   ```
-   6. Ensure you ***reload*** your shell so the `rbenv` can extend `PATH` accordingly.
-
-3. Install project's `gem` dependencies via `bundler`
-   ```zsh
-   bundle install
-   ```
-
-4. Add a reference to the [Cocoapods] private repository:
-   ```zsh
-   bundle exec pod repo-art add tomtom-sdk-cocoapods "https://repositories.tomtom.com/artifactory/api/pods/cocoapods"
-   ```
-
-5. Install the dependencies by executing the following command in **the project folder**.
-    ```
-    bundle exec pod install
-    ```
-
-6. To update the SDK version, run the command:
-    ```
-    bundle exec pod repo-art update tomtom-sdk-cocoapods
-    ```
-7. Open the project’s `xcworkspace` and start developing your awesome application.
+SPM or CocoaPods can be used to install the Navigation SDK. Both configurations are available in the examples. Please navigate to the related directory and find the project setup configuration.
+- [Project setup for SPM]
+- [Project setup for CocoaPods]
 
 ## API Keys
 
@@ -86,13 +40,10 @@ If you have a **black screen** when launching the Basic driving app, please foll
 - Check that your `API key` is valid for the requested features
 - Check your internet connection
 
----
-
-[Cocoapods]: (https://guides.cocoapods.org/using/getting-started.html)
 [contact us]: https://developer.tomtom.com/tomtom-sdk-for-ios/request-access
 [How to get a TomTom API Key]: https://developer.tomtom.com/how-to-get-tomtom-api-key
-[rbenv documentation]: https://github.com/rbenv/rbenv#readme
 [register]: https://developer.tomtom.com/user/register
-[tomtom-navigation-ios-examples]: https://github.com/tomtom-international/tomtom-navigation-ios-examples
 [TomTom Navigation SDK for iOS]: https://developer.tomtom.com/ios/navigation/documentation/overview/introduction
-[TomTom Developer Portal]: https://developer.tomtom.com/user/me/apps
\ No newline at end of file
+[TomTom Developer Portal]: https://developer.tomtom.com/user/me/apps
+[Project setup for SPM]: /SPM
+[Project setup for CocoaPods]: /CocoaPods
\ No newline at end of file
diff --git a/SPM/README.md b/SPM/README.md
new file mode 100644
index 0000000..759c52f
--- /dev/null
+++ b/SPM/README.md
@@ -0,0 +1,11 @@
+## Development setup
+
+Once you have gained access, set up the development environment by following:
+
+1. Clone the [tomtom-navigation-ios-examples] repository
+   ```zsh
+   git clone git@github.com:tomtom-international/tomtom-navigation-ios-examples.git
+   ```   
+2. Open the project’s `xcodeproj` in the `SPM` folder and start developing your awesome application.
+
+[tomtom-navigation-ios-examples]: https://github.com/tomtom-international/tomtom-navigation-ios-examples
\ No newline at end of file
diff --git a/SPM/TomTomSDKExamples.xcodeproj/project.pbxproj b/SPM/TomTomSDKExamples.xcodeproj/project.pbxproj
new file mode 100644
index 0000000..b26bbd0
--- /dev/null
+++ b/SPM/TomTomSDKExamples.xcodeproj/project.pbxproj
@@ -0,0 +1,629 @@
+// !$*UTF8*$!
+{
+	archiveVersion = 1;
+	classes = {
+	};
+	objectVersion = 56;
+	objects = {
+
+/* Begin PBXBuildFile section */
+		9D0D46CA2AF93379009E9B53 /* Colors.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 9D0D46AF2AF93379009E9B53 /* Colors.xcassets */; };
+		9D0D46CB2AF93379009E9B53 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 9D0D46B02AF93379009E9B53 /* Assets.xcassets */; };
+		9D0D46CC2AF93379009E9B53 /* GPX-Amsterdam.gpx in Resources */ = {isa = PBXBuildFile; fileRef = 9D0D46B12AF93379009E9B53 /* GPX-Amsterdam.gpx */; };
+		9D0D46CD2AF93379009E9B53 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 9D0D46B22AF93379009E9B53 /* Localizable.strings */; };
+		9D0D46CE2AF93379009E9B53 /* TomTomServices.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D0D46B42AF93379009E9B53 /* TomTomServices.swift */; };
+		9D0D46CF2AF93379009E9B53 /* Keys.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D0D46B52AF93379009E9B53 /* Keys.swift */; };
+		9D0D46D02AF93379009E9B53 /* BackButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D0D46B72AF93379009E9B53 /* BackButton.swift */; };
+		9D0D46D12AF93379009E9B53 /* Resource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D0D46B82AF93379009E9B53 /* Resource.swift */; };
+		9D0D46D22AF93379009E9B53 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 9D0D46BA2AF93379009E9B53 /* Preview Assets.xcassets */; };
+		9D0D46D32AF93379009E9B53 /* MapExamplesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D0D46BD2AF93379009E9B53 /* MapExamplesView.swift */; };
+		9D0D46D42AF93379009E9B53 /* MainMenu.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D0D46BE2AF93379009E9B53 /* MainMenu.swift */; };
+		9D0D46D52AF93379009E9B53 /* NavigationExamplesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D0D46C02AF93379009E9B53 /* NavigationExamplesView.swift */; };
+		9D0D46D62AF93379009E9B53 /* SearchExamplesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D0D46C22AF93379009E9B53 /* SearchExamplesView.swift */; };
+		9D0D46D72AF93379009E9B53 /* RoutingExamplesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D0D46C42AF93379009E9B53 /* RoutingExamplesView.swift */; };
+		9D0D46D82AF93379009E9B53 /* OnlineNavigationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D0D46C62AF93379009E9B53 /* OnlineNavigationView.swift */; };
+		9D0D46D92AF93379009E9B53 /* README.md in Resources */ = {isa = PBXBuildFile; fileRef = 9D0D46C72AF93379009E9B53 /* README.md */; };
+		9D0D46DA2AF93379009E9B53 /* OnlineNavigationContent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D0D46C82AF93379009E9B53 /* OnlineNavigationContent.swift */; };
+		9D0D46DB2AF93379009E9B53 /* TomTomSDKExamplesApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D0D46C92AF93379009E9B53 /* TomTomSDKExamplesApp.swift */; };
+		9D0D47412AF935B5009E9B53 /* TomTomSDKCommon in Frameworks */ = {isa = PBXBuildFile; productRef = 9D0D47402AF935B5009E9B53 /* TomTomSDKCommon */; };
+		9D0D47432AF935B9009E9B53 /* TomTomSDKCommonUI in Frameworks */ = {isa = PBXBuildFile; productRef = 9D0D47422AF935B9009E9B53 /* TomTomSDKCommonUI */; };
+		9D0D47452AF935BE009E9B53 /* TomTomSDKDefaultTextToSpeech in Frameworks */ = {isa = PBXBuildFile; productRef = 9D0D47442AF935BE009E9B53 /* TomTomSDKDefaultTextToSpeech */; };
+		9D0D47472AF935C4009E9B53 /* TomTomSDKLocationProvider in Frameworks */ = {isa = PBXBuildFile; productRef = 9D0D47462AF935C4009E9B53 /* TomTomSDKLocationProvider */; };
+		9D0D47492AF935CA009E9B53 /* TomTomSDKMapDisplay in Frameworks */ = {isa = PBXBuildFile; productRef = 9D0D47482AF935CA009E9B53 /* TomTomSDKMapDisplay */; };
+		9D0D474B2AF935D0009E9B53 /* TomTomSDKNavigation in Frameworks */ = {isa = PBXBuildFile; productRef = 9D0D474A2AF935D0009E9B53 /* TomTomSDKNavigation */; };
+		9D0D474D2AF935D6009E9B53 /* TomTomSDKNavigationEngines in Frameworks */ = {isa = PBXBuildFile; productRef = 9D0D474C2AF935D6009E9B53 /* TomTomSDKNavigationEngines */; };
+		9D0D474F2AF935EA009E9B53 /* TomTomSDKNavigationOnline in Frameworks */ = {isa = PBXBuildFile; productRef = 9D0D474E2AF935EA009E9B53 /* TomTomSDKNavigationOnline */; };
+		9D0D47512AF935EF009E9B53 /* TomTomSDKNavigationUI in Frameworks */ = {isa = PBXBuildFile; productRef = 9D0D47502AF935EF009E9B53 /* TomTomSDKNavigationUI */; };
+		9D0D47532AF935F6009E9B53 /* TomTomSDKRoute in Frameworks */ = {isa = PBXBuildFile; productRef = 9D0D47522AF935F6009E9B53 /* TomTomSDKRoute */; };
+		9D0D47552AF935FD009E9B53 /* TomTomSDKRoutePlanner in Frameworks */ = {isa = PBXBuildFile; productRef = 9D0D47542AF935FD009E9B53 /* TomTomSDKRoutePlanner */; };
+		9D0D47572AF93603009E9B53 /* TomTomSDKRoutePlannerOnline in Frameworks */ = {isa = PBXBuildFile; productRef = 9D0D47562AF93603009E9B53 /* TomTomSDKRoutePlannerOnline */; };
+		9D0D47592AF93609009E9B53 /* TomTomSDKRouteReplannerDefault in Frameworks */ = {isa = PBXBuildFile; productRef = 9D0D47582AF93609009E9B53 /* TomTomSDKRouteReplannerDefault */; };
+		9D0D475B2AF941E4009E9B53 /* TomTomSDKExamplesInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 9D0D475A2AF941E4009E9B53 /* TomTomSDKExamplesInfo.plist */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXFileReference section */
+		182816C2A2C71B776131AB66 /* Pods_TomTomSDKExamples.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_TomTomSDKExamples.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+		9D0D46AF2AF93379009E9B53 /* Colors.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Colors.xcassets; sourceTree = "<group>"; };
+		9D0D46B02AF93379009E9B53 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
+		9D0D46B12AF93379009E9B53 /* GPX-Amsterdam.gpx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = "GPX-Amsterdam.gpx"; sourceTree = "<group>"; };
+		9D0D46B22AF93379009E9B53 /* Localizable.strings */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; path = Localizable.strings; sourceTree = "<group>"; };
+		9D0D46B42AF93379009E9B53 /* TomTomServices.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TomTomServices.swift; sourceTree = "<group>"; };
+		9D0D46B52AF93379009E9B53 /* Keys.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Keys.swift; sourceTree = "<group>"; };
+		9D0D46B72AF93379009E9B53 /* BackButton.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BackButton.swift; sourceTree = "<group>"; };
+		9D0D46B82AF93379009E9B53 /* Resource.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Resource.swift; sourceTree = "<group>"; };
+		9D0D46BA2AF93379009E9B53 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = "<group>"; };
+		9D0D46BD2AF93379009E9B53 /* MapExamplesView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MapExamplesView.swift; sourceTree = "<group>"; };
+		9D0D46BE2AF93379009E9B53 /* MainMenu.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MainMenu.swift; sourceTree = "<group>"; };
+		9D0D46C02AF93379009E9B53 /* NavigationExamplesView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NavigationExamplesView.swift; sourceTree = "<group>"; };
+		9D0D46C22AF93379009E9B53 /* SearchExamplesView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SearchExamplesView.swift; sourceTree = "<group>"; };
+		9D0D46C42AF93379009E9B53 /* RoutingExamplesView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RoutingExamplesView.swift; sourceTree = "<group>"; };
+		9D0D46C62AF93379009E9B53 /* OnlineNavigationView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OnlineNavigationView.swift; sourceTree = "<group>"; };
+		9D0D46C72AF93379009E9B53 /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = "<group>"; };
+		9D0D46C82AF93379009E9B53 /* OnlineNavigationContent.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OnlineNavigationContent.swift; sourceTree = "<group>"; };
+		9D0D46C92AF93379009E9B53 /* TomTomSDKExamplesApp.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TomTomSDKExamplesApp.swift; sourceTree = "<group>"; };
+		9D0D475A2AF941E4009E9B53 /* TomTomSDKExamplesInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = TomTomSDKExamplesInfo.plist; sourceTree = "<group>"; };
+		9D2F394929A379FC0093F702 /* TomTomSDKExamples.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = TomTomSDKExamples.app; sourceTree = BUILT_PRODUCTS_DIR; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+		9D2F394629A379FC0093F702 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				9D0D47552AF935FD009E9B53 /* TomTomSDKRoutePlanner in Frameworks */,
+				9D0D47572AF93603009E9B53 /* TomTomSDKRoutePlannerOnline in Frameworks */,
+				9D0D47512AF935EF009E9B53 /* TomTomSDKNavigationUI in Frameworks */,
+				9D0D474F2AF935EA009E9B53 /* TomTomSDKNavigationOnline in Frameworks */,
+				9D0D47452AF935BE009E9B53 /* TomTomSDKDefaultTextToSpeech in Frameworks */,
+				9D0D47532AF935F6009E9B53 /* TomTomSDKRoute in Frameworks */,
+				9D0D474D2AF935D6009E9B53 /* TomTomSDKNavigationEngines in Frameworks */,
+				9D0D47432AF935B9009E9B53 /* TomTomSDKCommonUI in Frameworks */,
+				9D0D47412AF935B5009E9B53 /* TomTomSDKCommon in Frameworks */,
+				9D0D47592AF93609009E9B53 /* TomTomSDKRouteReplannerDefault in Frameworks */,
+				9D0D47492AF935CA009E9B53 /* TomTomSDKMapDisplay in Frameworks */,
+				9D0D47472AF935C4009E9B53 /* TomTomSDKLocationProvider in Frameworks */,
+				9D0D474B2AF935D0009E9B53 /* TomTomSDKNavigation in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+		8C16E916058AB376AE1D4195 /* Frameworks */ = {
+			isa = PBXGroup;
+			children = (
+				182816C2A2C71B776131AB66 /* Pods_TomTomSDKExamples.framework */,
+			);
+			name = Frameworks;
+			sourceTree = "<group>";
+		};
+		9D0D46AD2AF93379009E9B53 /* TomTomSDKExamples */ = {
+			isa = PBXGroup;
+			children = (
+				9D0D46AE2AF93379009E9B53 /* Resources */,
+				9D0D46B32AF93379009E9B53 /* Utils */,
+				9D0D46B92AF93379009E9B53 /* Preview Content */,
+				9D0D46BB2AF93379009E9B53 /* Examples */,
+				9D0D46C92AF93379009E9B53 /* TomTomSDKExamplesApp.swift */,
+				9D0D475A2AF941E4009E9B53 /* TomTomSDKExamplesInfo.plist */,
+			);
+			name = TomTomSDKExamples;
+			path = ../TomTomSDKExamples;
+			sourceTree = "<group>";
+		};
+		9D0D46AE2AF93379009E9B53 /* Resources */ = {
+			isa = PBXGroup;
+			children = (
+				9D0D46AF2AF93379009E9B53 /* Colors.xcassets */,
+				9D0D46B02AF93379009E9B53 /* Assets.xcassets */,
+				9D0D46B12AF93379009E9B53 /* GPX-Amsterdam.gpx */,
+				9D0D46B22AF93379009E9B53 /* Localizable.strings */,
+			);
+			path = Resources;
+			sourceTree = "<group>";
+		};
+		9D0D46B32AF93379009E9B53 /* Utils */ = {
+			isa = PBXGroup;
+			children = (
+				9D0D46B42AF93379009E9B53 /* TomTomServices.swift */,
+				9D0D46B52AF93379009E9B53 /* Keys.swift */,
+				9D0D46B62AF93379009E9B53 /* UI Components */,
+				9D0D46B82AF93379009E9B53 /* Resource.swift */,
+			);
+			path = Utils;
+			sourceTree = "<group>";
+		};
+		9D0D46B62AF93379009E9B53 /* UI Components */ = {
+			isa = PBXGroup;
+			children = (
+				9D0D46B72AF93379009E9B53 /* BackButton.swift */,
+			);
+			path = "UI Components";
+			sourceTree = "<group>";
+		};
+		9D0D46B92AF93379009E9B53 /* Preview Content */ = {
+			isa = PBXGroup;
+			children = (
+				9D0D46BA2AF93379009E9B53 /* Preview Assets.xcassets */,
+			);
+			path = "Preview Content";
+			sourceTree = "<group>";
+		};
+		9D0D46BB2AF93379009E9B53 /* Examples */ = {
+			isa = PBXGroup;
+			children = (
+				9D0D46BC2AF93379009E9B53 /* Maps */,
+				9D0D46BE2AF93379009E9B53 /* MainMenu.swift */,
+				9D0D46BF2AF93379009E9B53 /* Navigation */,
+				9D0D46C12AF93379009E9B53 /* Search */,
+				9D0D46C32AF93379009E9B53 /* Routing */,
+				9D0D46C52AF93379009E9B53 /* UseCase */,
+			);
+			path = Examples;
+			sourceTree = "<group>";
+		};
+		9D0D46BC2AF93379009E9B53 /* Maps */ = {
+			isa = PBXGroup;
+			children = (
+				9D0D46BD2AF93379009E9B53 /* MapExamplesView.swift */,
+			);
+			path = Maps;
+			sourceTree = "<group>";
+		};
+		9D0D46BF2AF93379009E9B53 /* Navigation */ = {
+			isa = PBXGroup;
+			children = (
+				9D0D46C02AF93379009E9B53 /* NavigationExamplesView.swift */,
+			);
+			path = Navigation;
+			sourceTree = "<group>";
+		};
+		9D0D46C12AF93379009E9B53 /* Search */ = {
+			isa = PBXGroup;
+			children = (
+				9D0D46C22AF93379009E9B53 /* SearchExamplesView.swift */,
+			);
+			path = Search;
+			sourceTree = "<group>";
+		};
+		9D0D46C32AF93379009E9B53 /* Routing */ = {
+			isa = PBXGroup;
+			children = (
+				9D0D46C42AF93379009E9B53 /* RoutingExamplesView.swift */,
+			);
+			path = Routing;
+			sourceTree = "<group>";
+		};
+		9D0D46C52AF93379009E9B53 /* UseCase */ = {
+			isa = PBXGroup;
+			children = (
+				9D0D46C62AF93379009E9B53 /* OnlineNavigationView.swift */,
+				9D0D46C72AF93379009E9B53 /* README.md */,
+				9D0D46C82AF93379009E9B53 /* OnlineNavigationContent.swift */,
+			);
+			path = UseCase;
+			sourceTree = "<group>";
+		};
+		9D2F394029A379FC0093F702 = {
+			isa = PBXGroup;
+			children = (
+				9D0D46AD2AF93379009E9B53 /* TomTomSDKExamples */,
+				9D2F394A29A379FC0093F702 /* Products */,
+				8C16E916058AB376AE1D4195 /* Frameworks */,
+			);
+			sourceTree = "<group>";
+		};
+		9D2F394A29A379FC0093F702 /* Products */ = {
+			isa = PBXGroup;
+			children = (
+				9D2F394929A379FC0093F702 /* TomTomSDKExamples.app */,
+			);
+			name = Products;
+			sourceTree = "<group>";
+		};
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+		9D2F394829A379FC0093F702 /* TomTomSDKExamples */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = 9D2F395729A379FE0093F702 /* Build configuration list for PBXNativeTarget "TomTomSDKExamples" */;
+			buildPhases = (
+				9D2F394529A379FC0093F702 /* Sources */,
+				9D2F394629A379FC0093F702 /* Frameworks */,
+				9D2F394729A379FC0093F702 /* Resources */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = TomTomSDKExamples;
+			packageProductDependencies = (
+				9D0D47402AF935B5009E9B53 /* TomTomSDKCommon */,
+				9D0D47422AF935B9009E9B53 /* TomTomSDKCommonUI */,
+				9D0D47442AF935BE009E9B53 /* TomTomSDKDefaultTextToSpeech */,
+				9D0D47462AF935C4009E9B53 /* TomTomSDKLocationProvider */,
+				9D0D47482AF935CA009E9B53 /* TomTomSDKMapDisplay */,
+				9D0D474A2AF935D0009E9B53 /* TomTomSDKNavigation */,
+				9D0D474C2AF935D6009E9B53 /* TomTomSDKNavigationEngines */,
+				9D0D474E2AF935EA009E9B53 /* TomTomSDKNavigationOnline */,
+				9D0D47502AF935EF009E9B53 /* TomTomSDKNavigationUI */,
+				9D0D47522AF935F6009E9B53 /* TomTomSDKRoute */,
+				9D0D47542AF935FD009E9B53 /* TomTomSDKRoutePlanner */,
+				9D0D47562AF93603009E9B53 /* TomTomSDKRoutePlannerOnline */,
+				9D0D47582AF93609009E9B53 /* TomTomSDKRouteReplannerDefault */,
+			);
+			productName = "TomTom SDK Examples";
+			productReference = 9D2F394929A379FC0093F702 /* TomTomSDKExamples.app */;
+			productType = "com.apple.product-type.application";
+		};
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+		9D2F394129A379FC0093F702 /* Project object */ = {
+			isa = PBXProject;
+			attributes = {
+				BuildIndependentTargetsInParallel = 1;
+				LastSwiftUpdateCheck = 1410;
+				LastUpgradeCheck = 1410;
+				TargetAttributes = {
+					9D2F394829A379FC0093F702 = {
+						CreatedOnToolsVersion = 14.1;
+					};
+				};
+			};
+			buildConfigurationList = 9D2F394429A379FC0093F702 /* Build configuration list for PBXProject "TomTomSDKExamples" */;
+			compatibilityVersion = "Xcode 14.0";
+			developmentRegion = en;
+			hasScannedForEncodings = 0;
+			knownRegions = (
+				en,
+				Base,
+			);
+			mainGroup = 9D2F394029A379FC0093F702;
+			packageReferences = (
+				9D0D46DE2AF933E7009E9B53 /* XCRemoteSwiftPackageReference "tomtom-sdk-spm-navigation" */,
+				9D0D47332AF93514009E9B53 /* XCRemoteSwiftPackageReference "tomtom-sdk-spm-core" */,
+			);
+			productRefGroup = 9D2F394A29A379FC0093F702 /* Products */;
+			projectDirPath = "";
+			projectRoot = "";
+			targets = (
+				9D2F394829A379FC0093F702 /* TomTomSDKExamples */,
+			);
+		};
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+		9D2F394729A379FC0093F702 /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				9D0D46D92AF93379009E9B53 /* README.md in Resources */,
+				9D0D46CC2AF93379009E9B53 /* GPX-Amsterdam.gpx in Resources */,
+				9D0D46CD2AF93379009E9B53 /* Localizable.strings in Resources */,
+				9D0D46D22AF93379009E9B53 /* Preview Assets.xcassets in Resources */,
+				9D0D46CB2AF93379009E9B53 /* Assets.xcassets in Resources */,
+				9D0D46CA2AF93379009E9B53 /* Colors.xcassets in Resources */,
+				9D0D475B2AF941E4009E9B53 /* TomTomSDKExamplesInfo.plist in Resources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+		9D2F394529A379FC0093F702 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				9D0D46D52AF93379009E9B53 /* NavigationExamplesView.swift in Sources */,
+				9D0D46D72AF93379009E9B53 /* RoutingExamplesView.swift in Sources */,
+				9D0D46CE2AF93379009E9B53 /* TomTomServices.swift in Sources */,
+				9D0D46DB2AF93379009E9B53 /* TomTomSDKExamplesApp.swift in Sources */,
+				9D0D46D42AF93379009E9B53 /* MainMenu.swift in Sources */,
+				9D0D46D62AF93379009E9B53 /* SearchExamplesView.swift in Sources */,
+				9D0D46D32AF93379009E9B53 /* MapExamplesView.swift in Sources */,
+				9D0D46D12AF93379009E9B53 /* Resource.swift in Sources */,
+				9D0D46CF2AF93379009E9B53 /* Keys.swift in Sources */,
+				9D0D46D02AF93379009E9B53 /* BackButton.swift in Sources */,
+				9D0D46DA2AF93379009E9B53 /* OnlineNavigationContent.swift in Sources */,
+				9D0D46D82AF93379009E9B53 /* OnlineNavigationView.swift in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXSourcesBuildPhase section */
+
+/* Begin XCBuildConfiguration section */
+		9D2F395529A379FE0093F702 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				CLANG_ANALYZER_NONNULL = YES;
+				CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
+				CLANG_ENABLE_MODULES = YES;
+				CLANG_ENABLE_OBJC_ARC = YES;
+				CLANG_ENABLE_OBJC_WEAK = 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_DOCUMENTATION_COMMENTS = YES;
+				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_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
+				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+				CLANG_WARN_STRICT_PROTOTYPES = YES;
+				CLANG_WARN_SUSPICIOUS_MOVE = YES;
+				CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+				CLANG_WARN_UNREACHABLE_CODE = YES;
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+				COPY_PHASE_STRIP = NO;
+				DEBUG_INFORMATION_FORMAT = dwarf;
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
+				ENABLE_TESTABILITY = YES;
+				GCC_C_LANGUAGE_STANDARD = gnu11;
+				GCC_DYNAMIC_NO_PIC = NO;
+				GCC_NO_COMMON_BLOCKS = YES;
+				GCC_OPTIMIZATION_LEVEL = 0;
+				GCC_PREPROCESSOR_DEFINITIONS = (
+					"DEBUG=1",
+					"$(inherited)",
+				);
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+				GCC_WARN_UNDECLARED_SELECTOR = YES;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+				GCC_WARN_UNUSED_FUNCTION = YES;
+				GCC_WARN_UNUSED_VARIABLE = YES;
+				IPHONEOS_DEPLOYMENT_TARGET = 16.1;
+				MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
+				MTL_FAST_MATH = YES;
+				ONLY_ACTIVE_ARCH = YES;
+				SDKROOT = iphoneos;
+				SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
+				SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+			};
+			name = Debug;
+		};
+		9D2F395629A379FE0093F702 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				CLANG_ANALYZER_NONNULL = YES;
+				CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
+				CLANG_ENABLE_MODULES = YES;
+				CLANG_ENABLE_OBJC_ARC = YES;
+				CLANG_ENABLE_OBJC_WEAK = 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_DOCUMENTATION_COMMENTS = YES;
+				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_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
+				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+				CLANG_WARN_STRICT_PROTOTYPES = YES;
+				CLANG_WARN_SUSPICIOUS_MOVE = YES;
+				CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+				CLANG_WARN_UNREACHABLE_CODE = YES;
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+				COPY_PHASE_STRIP = NO;
+				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+				ENABLE_NS_ASSERTIONS = NO;
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
+				GCC_C_LANGUAGE_STANDARD = gnu11;
+				GCC_NO_COMMON_BLOCKS = YES;
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+				GCC_WARN_UNDECLARED_SELECTOR = YES;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+				GCC_WARN_UNUSED_FUNCTION = YES;
+				GCC_WARN_UNUSED_VARIABLE = YES;
+				IPHONEOS_DEPLOYMENT_TARGET = 16.1;
+				MTL_ENABLE_DEBUG_INFO = NO;
+				MTL_FAST_MATH = YES;
+				SDKROOT = iphoneos;
+				SWIFT_COMPILATION_MODE = wholemodule;
+				SWIFT_OPTIMIZATION_LEVEL = "-O";
+				VALIDATE_PRODUCT = YES;
+			};
+			name = Release;
+		};
+		9D2F395829A379FE0093F702 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+				ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
+				CODE_SIGN_STYLE = Manual;
+				CURRENT_PROJECT_VERSION = 1;
+				DEVELOPMENT_ASSET_PATHS = "\"../TomTomSDKExamples/Preview Content\"";
+				DEVELOPMENT_TEAM = "";
+				ENABLE_PREVIEWS = YES;
+				GENERATE_INFOPLIST_FILE = YES;
+				INFOPLIST_FILE = ../TomTomSDKExamples/TomTomSDKExamplesInfo.plist;
+				INFOPLIST_KEY_NSLocationAlwaysAndWhenInUseUsageDescription = "Application requires GPS to display your position on map";
+				INFOPLIST_KEY_NSLocationAlwaysUsageDescription = "Application requires GPS to display your position on map";
+				INFOPLIST_KEY_NSLocationWhenInUseUsageDescription = "Application requires GPS to display your position on map";
+				INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
+				INFOPLIST_KEY_UILaunchScreen_Generation = YES;
+				INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
+				INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
+				IPHONEOS_DEPLOYMENT_TARGET = 14.0;
+				LD_RUNPATH_SEARCH_PATHS = (
+					"$(inherited)",
+					"@executable_path/Frameworks",
+				);
+				MARKETING_VERSION = 1.0;
+				PRODUCT_BUNDLE_IDENTIFIER = "com.tomtom.TomTom-SDK-Examples";
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				PROVISIONING_PROFILE_SPECIFIER = "";
+				SWIFT_EMIT_LOC_STRINGS = YES;
+				SWIFT_VERSION = 5.0;
+				TARGETED_DEVICE_FAMILY = "1,2";
+			};
+			name = Debug;
+		};
+		9D2F395929A379FE0093F702 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+				ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
+				CODE_SIGN_STYLE = Manual;
+				CURRENT_PROJECT_VERSION = 1;
+				DEVELOPMENT_ASSET_PATHS = "\"../TomTomSDKExamples/Preview Content\"";
+				DEVELOPMENT_TEAM = "";
+				ENABLE_PREVIEWS = YES;
+				GENERATE_INFOPLIST_FILE = YES;
+				INFOPLIST_FILE = ../TomTomSDKExamples/TomTomSDKExamplesInfo.plist;
+				INFOPLIST_KEY_NSLocationAlwaysAndWhenInUseUsageDescription = "Application requires GPS to display your position on map";
+				INFOPLIST_KEY_NSLocationAlwaysUsageDescription = "Application requires GPS to display your position on map";
+				INFOPLIST_KEY_NSLocationWhenInUseUsageDescription = "Application requires GPS to display your position on map";
+				INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
+				INFOPLIST_KEY_UILaunchScreen_Generation = YES;
+				INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
+				INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
+				IPHONEOS_DEPLOYMENT_TARGET = 14.0;
+				LD_RUNPATH_SEARCH_PATHS = (
+					"$(inherited)",
+					"@executable_path/Frameworks",
+				);
+				MARKETING_VERSION = 1.0;
+				PRODUCT_BUNDLE_IDENTIFIER = "com.tomtom.TomTom-SDK-Examples";
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				PROVISIONING_PROFILE_SPECIFIER = "";
+				SWIFT_EMIT_LOC_STRINGS = YES;
+				SWIFT_VERSION = 5.0;
+				TARGETED_DEVICE_FAMILY = "1,2";
+			};
+			name = Release;
+		};
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+		9D2F394429A379FC0093F702 /* Build configuration list for PBXProject "TomTomSDKExamples" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				9D2F395529A379FE0093F702 /* Debug */,
+				9D2F395629A379FE0093F702 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		9D2F395729A379FE0093F702 /* Build configuration list for PBXNativeTarget "TomTomSDKExamples" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				9D2F395829A379FE0093F702 /* Debug */,
+				9D2F395929A379FE0093F702 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+/* End XCConfigurationList section */
+
+/* Begin XCRemoteSwiftPackageReference section */
+		9D0D46DE2AF933E7009E9B53 /* XCRemoteSwiftPackageReference "tomtom-sdk-spm-navigation" */ = {
+			isa = XCRemoteSwiftPackageReference;
+			repositoryURL = "https://github.com/tomtom-international/tomtom-sdk-spm-navigation";
+			requirement = {
+				kind = exactVersion;
+				version = 0.31.0;
+			};
+		};
+		9D0D47332AF93514009E9B53 /* XCRemoteSwiftPackageReference "tomtom-sdk-spm-core" */ = {
+			isa = XCRemoteSwiftPackageReference;
+			repositoryURL = "https://github.com/tomtom-international/tomtom-sdk-spm-core";
+			requirement = {
+				kind = exactVersion;
+				version = 0.31.0;
+			};
+		};
+/* End XCRemoteSwiftPackageReference section */
+
+/* Begin XCSwiftPackageProductDependency section */
+		9D0D47402AF935B5009E9B53 /* TomTomSDKCommon */ = {
+			isa = XCSwiftPackageProductDependency;
+			package = 9D0D47332AF93514009E9B53 /* XCRemoteSwiftPackageReference "tomtom-sdk-spm-core" */;
+			productName = TomTomSDKCommon;
+		};
+		9D0D47422AF935B9009E9B53 /* TomTomSDKCommonUI */ = {
+			isa = XCSwiftPackageProductDependency;
+			package = 9D0D47332AF93514009E9B53 /* XCRemoteSwiftPackageReference "tomtom-sdk-spm-core" */;
+			productName = TomTomSDKCommonUI;
+		};
+		9D0D47442AF935BE009E9B53 /* TomTomSDKDefaultTextToSpeech */ = {
+			isa = XCSwiftPackageProductDependency;
+			package = 9D0D46DE2AF933E7009E9B53 /* XCRemoteSwiftPackageReference "tomtom-sdk-spm-navigation" */;
+			productName = TomTomSDKDefaultTextToSpeech;
+		};
+		9D0D47462AF935C4009E9B53 /* TomTomSDKLocationProvider */ = {
+			isa = XCSwiftPackageProductDependency;
+			package = 9D0D47332AF93514009E9B53 /* XCRemoteSwiftPackageReference "tomtom-sdk-spm-core" */;
+			productName = TomTomSDKLocationProvider;
+		};
+		9D0D47482AF935CA009E9B53 /* TomTomSDKMapDisplay */ = {
+			isa = XCSwiftPackageProductDependency;
+			package = 9D0D47332AF93514009E9B53 /* XCRemoteSwiftPackageReference "tomtom-sdk-spm-core" */;
+			productName = TomTomSDKMapDisplay;
+		};
+		9D0D474A2AF935D0009E9B53 /* TomTomSDKNavigation */ = {
+			isa = XCSwiftPackageProductDependency;
+			package = 9D0D46DE2AF933E7009E9B53 /* XCRemoteSwiftPackageReference "tomtom-sdk-spm-navigation" */;
+			productName = TomTomSDKNavigation;
+		};
+		9D0D474C2AF935D6009E9B53 /* TomTomSDKNavigationEngines */ = {
+			isa = XCSwiftPackageProductDependency;
+			package = 9D0D46DE2AF933E7009E9B53 /* XCRemoteSwiftPackageReference "tomtom-sdk-spm-navigation" */;
+			productName = TomTomSDKNavigationEngines;
+		};
+		9D0D474E2AF935EA009E9B53 /* TomTomSDKNavigationOnline */ = {
+			isa = XCSwiftPackageProductDependency;
+			package = 9D0D46DE2AF933E7009E9B53 /* XCRemoteSwiftPackageReference "tomtom-sdk-spm-navigation" */;
+			productName = TomTomSDKNavigationOnline;
+		};
+		9D0D47502AF935EF009E9B53 /* TomTomSDKNavigationUI */ = {
+			isa = XCSwiftPackageProductDependency;
+			package = 9D0D46DE2AF933E7009E9B53 /* XCRemoteSwiftPackageReference "tomtom-sdk-spm-navigation" */;
+			productName = TomTomSDKNavigationUI;
+		};
+		9D0D47522AF935F6009E9B53 /* TomTomSDKRoute */ = {
+			isa = XCSwiftPackageProductDependency;
+			package = 9D0D47332AF93514009E9B53 /* XCRemoteSwiftPackageReference "tomtom-sdk-spm-core" */;
+			productName = TomTomSDKRoute;
+		};
+		9D0D47542AF935FD009E9B53 /* TomTomSDKRoutePlanner */ = {
+			isa = XCSwiftPackageProductDependency;
+			package = 9D0D47332AF93514009E9B53 /* XCRemoteSwiftPackageReference "tomtom-sdk-spm-core" */;
+			productName = TomTomSDKRoutePlanner;
+		};
+		9D0D47562AF93603009E9B53 /* TomTomSDKRoutePlannerOnline */ = {
+			isa = XCSwiftPackageProductDependency;
+			package = 9D0D47332AF93514009E9B53 /* XCRemoteSwiftPackageReference "tomtom-sdk-spm-core" */;
+			productName = TomTomSDKRoutePlannerOnline;
+		};
+		9D0D47582AF93609009E9B53 /* TomTomSDKRouteReplannerDefault */ = {
+			isa = XCSwiftPackageProductDependency;
+			package = 9D0D46DE2AF933E7009E9B53 /* XCRemoteSwiftPackageReference "tomtom-sdk-spm-navigation" */;
+			productName = TomTomSDKRouteReplannerDefault;
+		};
+/* End XCSwiftPackageProductDependency section */
+	};
+	rootObject = 9D2F394129A379FC0093F702 /* Project object */;
+}
diff --git a/SPM/TomTomSDKExamples.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/SPM/TomTomSDKExamples.xcodeproj/project.xcworkspace/contents.xcworkspacedata
new file mode 100644
index 0000000..919434a
--- /dev/null
+++ b/SPM/TomTomSDKExamples.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/SPM/TomTomSDKExamples.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/SPM/TomTomSDKExamples.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
new file mode 100644
index 0000000..18d9810
--- /dev/null
+++ b/SPM/TomTomSDKExamples.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/SPM/TomTomSDKExamples.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/SPM/TomTomSDKExamples.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved
new file mode 100644
index 0000000..f8c25ac
--- /dev/null
+++ b/SPM/TomTomSDKExamples.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved
@@ -0,0 +1,23 @@
+{
+  "pins" : [
+    {
+      "identity" : "tomtom-sdk-spm-core",
+      "kind" : "remoteSourceControl",
+      "location" : "https://github.com/tomtom-international/tomtom-sdk-spm-core",
+      "state" : {
+        "revision" : "21c7350c8f45c788fe40e888b6d17427f536546d",
+        "version" : "0.31.0"
+      }
+    },
+    {
+      "identity" : "tomtom-sdk-spm-navigation",
+      "kind" : "remoteSourceControl",
+      "location" : "https://github.com/tomtom-international/tomtom-sdk-spm-navigation",
+      "state" : {
+        "revision" : "2e2508fa4ae3511026dfeeec93d00a6cd5de45b2",
+        "version" : "0.31.0"
+      }
+    }
+  ],
+  "version" : 2
+}
diff --git a/SPM/TomTomSDKExamples.xcodeproj/xcshareddata/xcschemes/TomTomSDKExamples.xcscheme b/SPM/TomTomSDKExamples.xcodeproj/xcshareddata/xcschemes/TomTomSDKExamples.xcscheme
new file mode 100644
index 0000000..a17165e
--- /dev/null
+++ b/SPM/TomTomSDKExamples.xcodeproj/xcshareddata/xcschemes/TomTomSDKExamples.xcscheme
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Scheme
+   LastUpgradeVersion = "1410"
+   version = "1.7">
+   <BuildAction
+      parallelizeBuildables = "YES"
+      buildImplicitDependencies = "YES">
+      <BuildActionEntries>
+         <BuildActionEntry
+            buildForTesting = "YES"
+            buildForRunning = "YES"
+            buildForProfiling = "YES"
+            buildForArchiving = "YES"
+            buildForAnalyzing = "YES">
+            <BuildableReference
+               BuildableIdentifier = "primary"
+               BlueprintIdentifier = "9D2F394829A379FC0093F702"
+               BuildableName = "TomTomSDKExamples.app"
+               BlueprintName = "TomTomSDKExamples"
+               ReferencedContainer = "container:TomTomSDKExamples.xcodeproj">
+            </BuildableReference>
+         </BuildActionEntry>
+      </BuildActionEntries>
+   </BuildAction>
+   <TestAction
+      buildConfiguration = "Debug"
+      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
+      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
+      shouldUseLaunchSchemeArgsEnv = "YES">
+      <Testables>
+      </Testables>
+   </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">
+      <BuildableProductRunnable
+         runnableDebuggingMode = "0">
+         <BuildableReference
+            BuildableIdentifier = "primary"
+            BlueprintIdentifier = "9D2F394829A379FC0093F702"
+            BuildableName = "TomTomSDKExamples.app"
+            BlueprintName = "TomTomSDKExamples"
+            ReferencedContainer = "container:TomTomSDKExamples.xcodeproj">
+         </BuildableReference>
+      </BuildableProductRunnable>
+      <LocationScenarioReference
+         identifier = "../TomTomSDKExamples/Resources/GPX-Amsterdam.gpx"
+         referenceType = "0">
+      </LocationScenarioReference>
+   </LaunchAction>
+   <ProfileAction
+      buildConfiguration = "Release"
+      shouldUseLaunchSchemeArgsEnv = "YES"
+      savedToolIdentifier = ""
+      useCustomWorkingDirectory = "NO"
+      debugDocumentVersioning = "YES">
+      <BuildableProductRunnable
+         runnableDebuggingMode = "0">
+         <BuildableReference
+            BuildableIdentifier = "primary"
+            BlueprintIdentifier = "9D2F394829A379FC0093F702"
+            BuildableName = "TomTomSDKExamples.app"
+            BlueprintName = "TomTomSDKExamples"
+            ReferencedContainer = "container:TomTomSDKExamples.xcodeproj">
+         </BuildableReference>
+      </BuildableProductRunnable>
+   </ProfileAction>
+   <AnalyzeAction
+      buildConfiguration = "Debug">
+   </AnalyzeAction>
+   <ArchiveAction
+      buildConfiguration = "Release"
+      revealArchiveInOrganizer = "YES">
+   </ArchiveAction>
+</Scheme>
diff --git a/TomTomSDKExamplesInfo.plist b/TomTomSDKExamples/TomTomSDKExamplesInfo.plist
similarity index 82%
rename from TomTomSDKExamplesInfo.plist
rename to TomTomSDKExamples/TomTomSDKExamplesInfo.plist
index 12d29c4..8b20de6 100644
--- a/TomTomSDKExamplesInfo.plist
+++ b/TomTomSDKExamples/TomTomSDKExamplesInfo.plist
@@ -9,5 +9,9 @@
 		<key>UISceneConfigurations</key>
 		<dict/>
 	</dict>
+	<key>UIBackgroundModes</key>
+	<array>
+		<string>fetch</string>
+	</array>
 </dict>
 </plist>