     init(oldName: String, newName: String) {
         self.oldName = oldName
         self.newName = newName
-        
-        print("Rename Xcode Project from [\(oldName)] to [\(newName)]")
-        print("Current Path: \(fileManager.currentDirectoryPath)")
     }
     
     // MARK: - API
     
     func run() {
+        print("\n\(Color.Green)------------------------------------------")
+        print("\(Color.Green)Rename Xcode Project from [\(oldName)] to [\(newName)]")
+        print("\(Color.Green)Current Path: \(fileManager.currentDirectoryPath)")
+        print("\(Color.Green)------------------------------------------")
+        
         handleUnitTests()
         handleUITests()
         handleMainTarget()
         handleProjectFile()
+        
+        print("\n\(Color.Green)------------------------------------------")
+        print("\(Color.Green)Xcode Project Rename Finished!")
+        print("\(Color.Green)------------------------------------------\n")
     }
     
     // MARK: - Helpers
     
     private func handleUnitTests() {
-        print("Unit Tests")
+        print("\n\(Color.Magenta)--- [Unit Tests]")
         enumerateCurrentPath(appendingPathComponent: "\(oldName) Tests")
     }
     
     private func handleUITests() {
-        print("UI Tests")
+        print("\n\(Color.Magenta)--- [UI Tests]")
         enumerateCurrentPath(appendingPathComponent: "\(oldName) UITests")
     }
     
     private func handleMainTarget() {
-        print("Main Target")
+        print("\n\(Color.Magenta)--- [Main Target]")
         enumerateCurrentPath(appendingPathComponent: oldName)
     }
     
     private func handleProjectFile() {
-        print("Project File")
+        print("\n\(Color.Magenta)--- [Project File]")
         enumerateCurrentPath(appendingPathComponent: "\(oldName).xcodeproj")
     }
     

    private func shouldSkip(_ element: String) -> Bool {
        guard !element.contains(".DS_Store") else { return true }
        
        let ext = URL(fileURLWithPath: element).pathExtension
        
        switch ext {
        case "plist", "xcassets", "appiconset", "json", "png", "lproj":
            return true
        default:
            return false

    }
    
    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)")
            }
            
        } catch {
            print("\(Color.Red)\(error)\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)")
            }
        } catch {
            print("\(Color.Red)\(error)")
        }
    }
    
