diff --git a/commands/make/make.download.inc b/commands/make/make.download.inc
index 6064d27..6faa87a 100644
--- a/commands/make/make.download.inc
+++ b/commands/make/make.download.inc
@@ -238,6 +238,10 @@ function make_download_file_unpack($filename, $download_location, $name) {
       // I'd like to just use tar -z, but apparently it breaks on windoze. Why do they always have to ruin everything?
       $success = make_download_file_unpack_gzip($filename, $download_location);
       break;
+    case 'bz2':
+    case 'tbz':
+      $success = make_download_file_unpack_bzip($filename, $download_location);
+      break;
     case 'tar':
       $success = make_download_file_unpack_tar($filename, $download_location);
       break;
@@ -294,6 +298,26 @@ function make_download_file_unpack_gzip($filename, $download_location) {
   }
 }
 
+/**
+ * Unpacks a bzip2'd tar to the specified location.
+ *
+ * @return
+ *   TRUE or FALSE depending on whether the operation was successful.
+ */
+function make_download_file_unpack_bzip($filename, $download_location) {
+  if (!drush_shell_exec('bzip2 --decompress %s', $filename))
+    return drush_set_error("Failed to decompress \"$filename\"");
+
+  if (substr($filename, -4) === '.bz2')
+    $tarfile = substr($filename, 0, -4);
+  else if (substr($filename, -4) === '.tbz')
+    $tarfile = substr($filename, 0, -4) . '.tar';
+  else
+    return drush_set_error("Unknown extension for filename \"$filename\"");
+
+  return make_download_file_unpack_tar($tarfile, $download_location);
+}
+
 function make_download_file_unpack_zip($filename, $download_location) {
   $tmp_path = make_tmp();
 
@@ -314,6 +338,7 @@ function _make_download_file_move($tmp_path, $filename, $download_location) {
     if ($directory != $main_directory) {
       drush_shell_exec('mv %s %s', $tmp_path . '/__unzip__/' . $directory, $tmp_path . '/__unzip__/' . $main_directory);
     }
+    drush_shell_exec('rmdir %s', $download_location);
     drush_shell_exec('cp -Rf %s %s', $tmp_path . '/__unzip__/' . $main_directory, dirname($download_location));
     drush_shell_exec('rm -rf %s', $tmp_path . '/__unzip__');
   }
