 
     options.usage """
       Usage: apm unpublish [<package_name>]
+             apm unpublish <package_name>@<package_version>
 
-      Remove a published package from the atom.io registry. The package in the
-      current working directory will be unpublished if no package name is
-      specified.
+      Remove a published package from the atom.io registry or unpublish a given
+      version of a package.
+
+      The package in the current working directory will be used if no package
+      name is specified.
     """
     options.alias('h', 'help').describe('help', 'Print this usage message')
     options.alias('f', 'force').boolean('force').describe('force', 'Do not prompt for confirmation')
 
-  unpublishPackage: (packageName, callback) ->
-    process.stdout.write "Unpublishing #{packageName} "
+  unpublishPackage: (packageName, packageVersion, callback) ->
+    packageLabel = packageName
+    packageLabel += "@#{packageVersion}" if packageVersion
+
+    process.stdout.write "Unpublishing #{packageLabel} "
 
     auth.getToken (error, token) =>
       if error?

          @logSuccess()
          callback()

  promptForConfirmation: (packageName, callback) ->
    prompt = readline.createInterface(process.stdin, process.stdout)
    prompt.question "Are you sure you want to unpublish #{packageName}? (yes) ", (answer) =>
      prompt.close()
      answer = if answer then answer.trim().toLowerCase() else 'yes'
      if answer is 'y' or answer is 'yes'
        @unpublishPackage(packageName, callback)

  run: (options) ->
    {callback} = options
    options = @parseOptions(options.commandArgs)

    [name] = options.argv._
    unless name?
      try
        {name} = JSON.parse(fs.readFileSync('package.json')) ? {}
      name ?= path.basename(process.cwd())

    if options.argv.force
      @unpublishPackage(name, callback)
    else
      @promptForConfirmation(name, callback)

          authorization: token
        json: true

      options.uri += "/versions/#{packageVersion}" if packageVersion

      request.del options, (error, response, body={}) =>
        if error?
          @logFailure()
