diff --git a/Lib/distutils/command/bdist_dumb.py b/Lib/distutils/command/bdist_dumb.py
index 805aa0a..e93c6b7 100644
--- a/Lib/distutils/command/bdist_dumb.py
+++ b/Lib/distutils/command/bdist_dumb.py
@@ -10,7 +10,8 @@
 
 import os
 from distutils.core import Command
-from distutils.util import get_platform, create_tree, remove_tree
+from distutils.util import get_platform
+from distutils.dir_util import create_tree, remove_tree
 from distutils.errors import *
 
 class bdist_dumb (Command):
diff --git a/Lib/distutils/command/bdist_rpm.py b/Lib/distutils/command/bdist_rpm.py
index 3302eea..e45d7a3 100644
--- a/Lib/distutils/command/bdist_rpm.py
+++ b/Lib/distutils/command/bdist_rpm.py
@@ -10,7 +10,8 @@
 import os, string
 from types import *
 from distutils.core import Command, DEBUG
-from distutils.util import get_platform, write_file
+from distutils.util import get_platform
+from distutils.file_util import write_file
 from distutils.errors import *
 
 class bdist_rpm (Command):
diff --git a/Lib/distutils/command/bdist_wininst.py b/Lib/distutils/command/bdist_wininst.py
index 0c53bf9..38e973b 100644
--- a/Lib/distutils/command/bdist_wininst.py
+++ b/Lib/distutils/command/bdist_wininst.py
@@ -9,7 +9,8 @@
 
 import sys, os, string
 from distutils.core import Command
-from distutils.util import get_platform, create_tree, remove_tree
+from distutils.util import get_platform
+from distutils.dir_util import create_tree, remove_tree
 from distutils.errors import *
 
 class bdist_wininst (Command):
diff --git a/Lib/distutils/command/clean.py b/Lib/distutils/command/clean.py
index 31147b5..1d8c7b2 100644
--- a/Lib/distutils/command/clean.py
+++ b/Lib/distutils/command/clean.py
@@ -8,7 +8,7 @@
 
 import os
 from distutils.core import Command
-from distutils.util import remove_tree
+from distutils.dir_util import remove_tree
 
 class clean (Command):
 
diff --git a/Lib/distutils/command/install.py b/Lib/distutils/command/install.py
index 1be4904..6385fdc 100644
--- a/Lib/distutils/command/install.py
+++ b/Lib/distutils/command/install.py
@@ -10,7 +10,8 @@
 from types import *
 from distutils.core import Command, DEBUG
 from distutils import sysconfig
-from distutils.util import write_file, convert_path, subst_vars, change_root
+from distutils.file_util import write_file
+from distutils.util import convert_path, subst_vars, change_root
 from distutils.errors import DistutilsOptionError
 from glob import glob
 
diff --git a/Lib/distutils/command/install_lib.py b/Lib/distutils/command/install_lib.py
index 1c15db1..879a7d0 100644
--- a/Lib/distutils/command/install_lib.py
+++ b/Lib/distutils/command/install_lib.py
@@ -4,7 +4,7 @@
 
 import sys, os, string
 from distutils.core import Command
-from distutils.util import copy_tree
+from distutils.dir_util import copy_tree
 
 class install_lib (Command):
 
diff --git a/Lib/distutils/command/sdist.py b/Lib/distutils/command/sdist.py
index 4765d7f..b2d7a86 100644
--- a/Lib/distutils/command/sdist.py
+++ b/Lib/distutils/command/sdist.py
@@ -10,9 +10,7 @@
 from types import *
 from glob import glob
 from distutils.core import Command
-from distutils.util import \
-     create_tree, remove_tree, newer, write_file, \
-     check_archive_formats
+from distutils import dir_util, dep_util, file_util, archive_util
 from distutils.text_file import TextFile
 from distutils.errors import *
 from distutils.filelist import FileList
@@ -117,7 +115,7 @@
                       "don't know how to create source distributions " + \
                       "on platform %s" % os.name
 
-        bad_format = check_archive_formats (self.formats)
+        bad_format = archive_util.check_archive_formats (self.formats)
         if bad_format:
             raise DistutilsOptionError, \
                   "unknown archive format '%s'" % bad_format
@@ -195,7 +193,7 @@
         # manifest; if so, we'll regenerate the manifest.
         template_exists = os.path.isfile(self.template)
         if template_exists:
-            template_newer = newer(self.template, self.manifest)
+            template_newer = dep_util.newer(self.template, self.manifest)
 
         # The contents of the manifest file almost certainly depend on the
         # setup script as well as the manifest template -- so if the setup
@@ -204,7 +202,7 @@
         # manifest, but there's no template -- which will happen if the
         # developer elects to generate a manifest some other way -- then we
         # can't regenerate the manifest, so we don't.)
-        setup_newer = newer(sys.argv[0], self.manifest)
+        setup_newer = dep_util.newer(sys.argv[0], self.manifest)
 
         # cases:
         #   1) no manifest, template exists: generate manifest
@@ -368,7 +366,7 @@
         by 'add_defaults()' and 'read_template()') to the manifest file
         named by 'self.manifest'.
         """
-        self.execute(write_file,
+        self.execute(file_util.write_file,
                      (self.manifest, self.filelist.files),
                      "writing manifest file '%s'" % self.manifest)
 
@@ -404,8 +402,8 @@
         """
         # Create all the directories under 'base_dir' necessary to
         # put 'files' there.
-        create_tree (base_dir, files,
-                     verbose=self.verbose, dry_run=self.dry_run)
+        dir_util.create_tree (base_dir, files,
+                              verbose=self.verbose, dry_run=self.dry_run)
 
         # And walk over the list of files, either making a hard link (if
         # os.link exists) to each one that doesn't already exist in its
@@ -453,7 +451,7 @@
         self.archive_files = archive_files
 
         if not self.keep_tree:
-            remove_tree (base_dir, self.verbose, self.dry_run)
+            dir_util.remove_tree (base_dir, self.verbose, self.dry_run)
 
     def get_archive_files (self):
         """Return the list of archive files created when the command
