     }
     
     private func updateContentsOfFile(atPath path: String) {
-        print("\n\(Color.White)UPDATE ITEM: \(path)")
-        
         do {
             let oldContent = try String(contentsOfFile: path, encoding: .utf8)
             if oldContent.contains(oldName) {
-                print("\(Color.Blue)UPDATE: \(path)")
                 let newContent = oldContent.replacingOccurrences(of: oldName, with: newName)
                 try newContent.write(toFile: path, atomically: true, encoding: .utf8)
-            } else {
-                print("\(Color.White)SKIP: \(path)")
+                print("\(Color.Blue)-- Updated: \(path)")
             }
-            
         } catch {
-            print("\(Color.Red)\(error)\n")
+            print("\(Color.Red)Error while updating file: \(error.localizedDescription)\n")
         }
     }
     
     private func renameItem(atPath path: String) {
-        print("\n\(Color.White)RENAME ITEM: \(path)")
-        
         do {
             let oldItemName = URL(fileURLWithPath: path).lastPathComponent
             if oldItemName.contains(oldName) {
                 let newItemName = oldItemName.replacingOccurrences(of: oldName, with: newName)
-                print("\(Color.Blue)RENAME: \(oldItemName) -> \(newItemName)")
-                
                 let directoryURL = URL(fileURLWithPath: path).deletingLastPathComponent()
                 let newPath = directoryURL.appendingPathComponent(newItemName).path
-                
                 try fileManager.moveItem(atPath: path, toPath: newPath)
-            } else {
-                print("\(Color.White)SKIP: \(path)")
+                print("\(Color.Magenta)-- Renamed: \(oldItemName) -> \(newItemName)")
             }
         } catch {
-            print("\(Color.Red)\(error)")
+            print("\(Color.Red)Error while renaming file: \(error.localizedDescription)")
         }
     }
     
 }
 
 let arguments = CommandLine.arguments
-print("arguments:\(arguments)")
 if arguments.count == 3 {
     let oldName = arguments[1]
     let newName = arguments[2].replacingOccurrences(of: " ", with: "")

        static let Magenta = "\u{001B}[0;35m"
        static let Cyan = "\u{001B}[0;36m"
        static let White = "\u{001B}[0;37m"
    }
    
    // MARK: - Properties
    
    let fileManager = FileManager.default
    
    let oldName: String
    let newName: String

    
    // MARK: - Helpers
    
    private func validatePath(_ path: String) -> Bool {
        let projectPath = path.appending("/\(oldName).xcodeproj")
        let workspacePath = path.appending("/\(oldName).xcworkspace")
        let isValid = fileManager.fileExists(atPath: projectPath) || fileManager.fileExists(atPath: workspacePath)
        return isValid
    }
    
    private func enumeratePath(_ path: String) {
        let enumerator = fileManager.enumerator(atPath: path)
        while let element = enumerator?.nextObject() as? String {
            let itemPath = path.appending("/\(element)")
            if !processedPaths.contains(itemPath) && !shouldSkip(element) {
                processPath(itemPath)
            }
        }
    }
    
    private func processPath(_ path: String) {
        print("\(Color.DarkGray)Processing: \(path)")
        
        var isDir: ObjCBool = false
        if fileManager.fileExists(atPath: path, isDirectory: &isDir) {
            if isDir.boolValue {
                enumeratePath(path)
            } else {
                updateContentsOfFile(atPath: path)
            }
            renameItem(atPath: path)
        }
        
        processedPaths.append(path)
    }
    
    private func shouldSkip(_ element: String) -> Bool {
        guard
            !element.hasPrefix("."),
            !element.contains(".DS_Store"),
            !element.contains("Carthage"),
            !element.contains("Pods"),
            !element.contains("fastlane")
        else { return true }
        
        let fileExtension = URL(fileURLWithPath: element).pathExtension
        switch fileExtension {
