             print("📋  Checking out version \(latestRelease)...")
             try shellOut(to: "git checkout \(latestRelease) --quiet", at: repositoryFolder.path)
         }
-
-        for subfolder in repositoryFolder.subfolders {
-            if subfolder.extension == "xcodeproj" {
+        
+        for subfolder in repositoryFolder.makeSubfolderSequence(recursive: true) {
+            if subfolder.extension == "xcodeproj" && !subfolder.name.lowercased().contains("demo") {
+                let path = subfolder.path.replacingOccurrences(of: repositoryFolder.parent!.path, with: "")
                 let packageName = subfolder.nameExcludingExtension
                 print("🚗  \(packageName) is ready for test drive\n")
-                return Package(name: packageName, folder: repositoryFolder, subFolder: nil)
-            }
-            
-            for subsubfolder in subfolder.subfolders {
-                if subsubfolder.extension == "xcodeproj" {
-                    let packageName = subsubfolder.nameExcludingExtension
-                    print("🚗  \(packageName) is ready for test drive\n")
-                    return Package(name: packageName, folder: repositoryFolder, subFolder: subfolder)
-                }
+                return Package(name: packageName, folder: repositoryFolder, path: path)
             }
         }
 


    for package in packages {
        try package.folder.move(to: projectsFolder)
        let projectPath = "\(workspaceName)/Projects/\(package.folder.name)" + (package.subFolder != nil ? "/\(package.subFolder!.name)" : "") + "/\(package.name).xcodeproj"
        workspace.addProject(at: projectPath)
    }


struct Package {
    let name: String
    let folder: Folder
    let path: String
}

class PackageLoader {
