     }
 
     public func run() throws {
-        guard arguments.count == 2 else {
+        guard arguments.count > 1 else {
             printDescription()
-            print("Examples:")
-            print("$ packagebuilder {PROJECT_NAME}")
             return
         }
 
         let projectName = arguments[1]
+        var folder = try FileSystem().createFolder(at: projectName)
 
-        let folder = try FileSystem().createFolder(at: projectName)
+        var expectingPath = false
+        for argument in arguments[2..<arguments.count] {
+            if expectingPath {
+                try folder.delete()
+                /// Use a given path for creating Package.
+                folder = try Folder(path: argument).createSubfolder(named: projectName)
+            }
+
+            switch argument {
+                case "--path":
+                    expectingPath = true
+                default:
+                    expectingPath = false
+                    continue
+            }
+        }
+
         print("Executing `swift package init --type executable`...")
         try shellOut(to: "swift package init --type executable", at: folder.path)
 

        try tempFolder.delete()

        print("Executing `swift build` & `swift test --parallel`")
        try shellOut(to: "cd \(projectName) && swift build && swift test --parallel")

        print("Generating xcodeproj...")
        try shellOut(to: "cd \(projectName) && swift package generate-xcodeproj")
    }

    // MARK: Private method

        try folder.file(named: "Package.swift").delete()
        try sourcesFolder.file(named: "main.swift").delete()

        let tempFolder = try folder.createSubfolder(named: "temp")
        print("Cloning PackageBulder by HTTPS to get files in Templates...")
        let packageBuilderGithubURL = "https://github.com/pixyzehn/PackageBuilder.git"
        try shellOut(to: "git clone \(packageBuilderGithubURL) \(folder.path)temp -q")

        print("Renaming {PROJECT_NAME} to \(projectName)...")
        try replaceAllFilesOfContentInFolder(oldName: "{PROJECT_NAME}", newName: "\(projectName)", at: "\(folder.path)temp/Templates")

        let userName = try shellOut(to: "git config user.name")
        print("Renaming {YOUR_NAME} to \(userName)...")
        try replaceAllFilesOfContentInFolder(oldName: "{YOUR_NAME}", newName: "\(userName)", at: "\(folder.path)temp/Templates")

        let thisYear = try shellOut(to: "date \"+%Y\"")
        print("Renaming {THIS_YEAR} to \(thisYear)...")
        try replaceAllFilesOfContentInFolder(oldName: "{THIS_YEAR}", newName: "\(thisYear)", at: "\(folder.path)temp/Templates")

        print("Moving files in Templates to a correct position...")
        try tempFolder.subfolder(named: "Templates").file(named: "Package.swift").move(to: folder)
