diff --git a/Lib/distutils/command/bdist.py b/Lib/distutils/command/bdist.py
index 1646993..47d4cbc 100644
--- a/Lib/distutils/command/bdist.py
+++ b/Lib/distutils/command/bdist.py
@@ -14,6 +14,18 @@
 from distutils.util import get_platform
 
 
+def show_formats ():
+    """Print list of available formats (arguments to "--format" option).
+    """
+    from distutils.fancy_getopt import FancyGetopt 
+    formats=[]
+    for format in bdist.format_commands:
+        formats.append(("formats=" + format, None,
+                        bdist.format_command[format][1]))
+    pretty_printer = FancyGetopt(formats)
+    pretty_printer.print_help("List of available distribution formats:")
+
+
 class bdist (Command):
 
     description = "create a built (binary) distribution"
@@ -24,6 +36,11 @@
                      "formats for distribution (comma-separated list)"),
                    ]
 
+    help_options = [
+        ('help-formats', None,
+         "lists available distribution formats", show_formats),
+	]
+
     # The following commands do not take a format option from bdist
     no_format_option = ('bdist_rpm',)
 
@@ -38,24 +55,9 @@
                        'ztar':  ('bdist_dumb', "compressed tar file"),
                        'tar':   ('bdist_dumb', "tar file"),
                        'zip':   ('bdist_dumb', "ZIP file"),
-		        }
-
-    def show_formats ():
-        """Print list of available formats (arguments to "--format" option).
-        """
-	from distutils.fancy_getopt import FancyGetopt 
-	formats=[]
-	for format in bdist.format_command.keys():
-	    formats.append(("formats="+format, None,
-                            bdist.format_command[format][1]))
-	formats.sort()
-	pretty_printer = FancyGetopt(formats)
-	pretty_printer.print_help("List of available distribution formats:")
-
-    help_options = [
-        ('help-formats', None,
-         "lists available distribution formats",show_formats),
-	]
+                     }
+    # establish the preferred order
+    format_commands = ['rpm', 'gztar', 'bztar', 'ztar', 'tar', 'zip']
 
 
     def initialize_options (self):
diff --git a/Lib/distutils/command/build.py b/Lib/distutils/command/build.py
index d5513fc..1e87f23 100644
--- a/Lib/distutils/command/build.py
+++ b/Lib/distutils/command/build.py
@@ -9,7 +9,12 @@
 import sys, os
 from distutils.core import Command
 from distutils.util import get_platform
-from distutils.ccompiler import show_compilers
+
+
+def show_compilers ():
+    from distutils.ccompiler import show_compilers
+    show_compilers()
+
 
 class build (Command):
 
diff --git a/Lib/distutils/command/build_clib.py b/Lib/distutils/command/build_clib.py
index 9a82ac0..7106882 100644
--- a/Lib/distutils/command/build_clib.py
+++ b/Lib/distutils/command/build_clib.py
@@ -23,7 +23,11 @@
 from types import *
 from distutils.core import Command
 from distutils.errors import *
-from distutils.ccompiler import new_compiler,show_compilers
+
+
+def show_compilers ():
+    from distutils.ccompiler import show_compilers
+    show_compilers()
 
 
 class build_clib (Command):
@@ -102,6 +106,7 @@
             return
 
         # Yech -- this is cut 'n pasted from build_ext.py!
+        from distutils.ccompiler import new_compiler
         self.compiler = new_compiler (compiler=self.compiler,
                                       verbose=self.verbose,
                                       dry_run=self.dry_run,
diff --git a/Lib/distutils/command/build_ext.py b/Lib/distutils/command/build_ext.py
index f3ff157..6b7ec74 100644
--- a/Lib/distutils/command/build_ext.py
+++ b/Lib/distutils/command/build_ext.py
@@ -14,7 +14,6 @@
 from distutils.errors import *
 from distutils.dep_util import newer_group
 from distutils.extension import Extension
-from distutils.ccompiler import show_compilers
 
 # An extension name is just a dot-separated list of Python NAMEs (ie.
 # the same as a fully-qualified module name).
@@ -22,6 +21,11 @@
     (r'^[a-zA-Z_][a-zA-Z_0-9]*(\.[a-zA-Z_][a-zA-Z_0-9]*)*$')
 
 
+def show_compilers ():
+    from distutils.ccompiler import show_compilers
+    show_compilers()
+
+
 class build_ext (Command):
     
     description = "build C/C++ extensions (compile/link to build directory)"
@@ -73,12 +77,12 @@
         ('compiler=', 'c',
          "specify the compiler type"),
         ]
+
     help_options = [
         ('help-compiler', None,
-         "lists available compilers",show_compilers),
+         "list available compilers", show_compilers),
 	]
 
-
     def initialize_options (self):
         self.extensions = None
         self.build_lib = None
diff --git a/Lib/distutils/command/sdist.py b/Lib/distutils/command/sdist.py
index 93e53bb..5627ebb 100644
--- a/Lib/distutils/command/sdist.py
+++ b/Lib/distutils/command/sdist.py
@@ -13,11 +13,27 @@
 from distutils.core import Command
 from distutils.util import \
      convert_path, create_tree, remove_tree, newer, write_file, \
-     check_archive_formats, ARCHIVE_FORMATS
+     check_archive_formats
 from distutils.text_file import TextFile
 from distutils.errors import DistutilsExecError, DistutilsOptionError
 
 
+def show_formats ():
+    """Print all possible values for the 'formats' option (used by
+    the "--help-formats" command-line option).
+    """
+    from distutils.fancy_getopt import FancyGetopt
+    from distutils.archive_util import ARCHIVE_FORMATS
+    formats=[]
+    for format in ARCHIVE_FORMATS.keys():
+        formats.append(("formats=" + format, None,
+                        ARCHIVE_FORMATS[format][2]))
+    formats.sort()
+    pretty_printer = FancyGetopt(formats)
+    pretty_printer.print_help(
+        "List of available source distribution formats:")
+
+
 class sdist (Command):
 
     description = "create a source distribution (tarball, zip file, etc.)"
@@ -43,22 +59,6 @@
         ]
 
 
-    # XXX ugh: this has to precede the 'help_options' list, because
-    # it is mentioned there -- also, this is not a method, even though
-    # it's defined in a class: double-ugh!
-    def show_formats ():
-        """Print all possible values for the 'formats' option -- used by
-        the "--help-formats" command-line option.
-        """
-	from distutils.fancy_getopt import FancyGetopt 
-	formats=[]
-	for format in ARCHIVE_FORMATS.keys():
-	    formats.append(("formats="+format,None,ARCHIVE_FORMATS[format][2]))
-	formats.sort()
-	pretty_printer = FancyGetopt(formats)
-	pretty_printer.print_help(
-            "List of available source distribution formats:")
-
     help_options = [
         ('help-formats', None,
          "list available distribution formats", show_formats),
@@ -69,7 +69,6 @@
     default_format = { 'posix': 'gztar',
                        'nt': 'zip' }
 
-
     def initialize_options (self):
         # 'template' and 'manifest' are, respectively, the names of
         # the manifest template and manifest file.
