     
     func process(string: String) -> String {
         return string.replacingOccurrences(of: "{PROJECT}", with: projectName)
-                     .replacingOccurrences(of: "{AUTHOR}", with: authorName)
-                     .replacingOccurrences(of: "{EMAIL}", with: authorEmail)
-                     .replacingOccurrences(of: "{URL}", with: gitHubURL)
-                     .replacingOccurrences(of: "{YEAR}", with: year)
-                     .replacingOccurrences(of: "{ORGANIZATION}", with: organizationName)
+            .replacingOccurrences(of: "{AUTHOR}", with: authorName)
+            .replacingOccurrences(of: "{EMAIL}", with: authorEmail)
+            .replacingOccurrences(of: "{URL}", with: gitHubURL)
+            .replacingOccurrences(of: "{YEAR}", with: year)
+            .replacingOccurrences(of: "{ORGANIZATION}", with: organizationName)
     }
     
     func process(filesInFolderWithPath folderPath: String) throws {


//: This *could* just be a dictionary, but a struct felt cleaner. Also, we get type safety(and autocompletion) for free!!
struct TemplateInformation {
	var destination: String? = nil
	var projectName: String? = nil
	var authorName: String? = nil
	var authorEmail: String? = nil
	var githubURL: String? = nil
	var organizationName: String? = nil
}

func processArguments() -> TemplateInformation {
	var templateInfo = TemplateInformation()
	
	let args = CommandLine.arguments
	
	for (index,argument) in args.enumerated() {
		//: Why lowercased() ? In case the user accidentally mistypes something.
		switch argument.lowercased() {
		case "--destination".lowercased() :
			templateInfo.destination = args.element(after: index)
		case "--projectName".lowercased() :
			templateInfo.projectName = args.element(after: index)
		case "--authorName".lowercased() :
			templateInfo.authorName = args.element(after: index)
		case "--authorEmail".lowercased() :
			templateInfo.authorEmail = args.element(after: index)
		case "--githubURL".lowercased() :
			templateInfo.githubURL = args.element(after: index)
		case "--organizationName".lowercased() :
			templateInfo.organizationName = args.element(after: index)
		default:
			//: We should probably put something to skip an argument value, but for now let's just continue on the loop ¯\_(ツ)_/¯
			break
		}
	}
	return templateInfo
}

// MARK: - Program

}

extension Array {
    func element(after index: Int) -> Element? {
        
        //: handles not only negative indices, but also index == self.count
        //: might be over-engineered, we only need to check for second condition
        let arrRange = [Int](0..<self.count)
        if arrRange.contains(index + 1) {
            return self[index + 1]
        } else {
            return nil
        }
    }
}

// MARK: - Types
