diff --git a/Lib/distutils/command/build.py b/Lib/distutils/command/build.py
index b74e51c..1586e60 100644
--- a/Lib/distutils/command/build.py
+++ b/Lib/distutils/command/build.py
@@ -12,31 +12,32 @@
 
 class Build (Command):
 
-    options = [('basedir=', 'b', "base directory for build library"),
-               ('libdir=', 'l', "directory for platform-shared files"),
-               ('platdir=', 'p', "directory for platform-specific files"),
+    options = [('build-base=', 'b',
+                "base directory for build library"),
+               ('build-lib=', 'l',
+                "directory for platform-shared files"),
+               ('build-platlib=', 'p',
+                "directory for platform-specific files"),
               ]
 
     def set_default_options (self):
-        self.basedir = 'build'
-        # these are decided only after 'basedir' has its final value
+        self.build_base = 'build'
+        # these are decided only after 'build_base' has its final value
         # (unless overridden by the user or client)
-        self.libdir = None
-        self.platdir = None
+        self.build_lib = None
+        self.build_platlib = None
 
     def set_final_options (self):
-        # 'libdir' and 'platdir' just default to 'lib' and 'plat' under
-        # the base build directory
-        if self.libdir is None:
-            self.libdir = os.path.join (self.basedir, 'lib')
-        if self.platdir is None:
-            self.platdir = os.path.join (self.basedir, 'platlib')
+        # 'build_lib' and 'build_platlib' just default to 'lib' and
+        # 'platlib' under the base build directory
+        if self.build_lib is None:
+            self.build_lib = os.path.join (self.build_base, 'lib')
+        if self.build_platlib is None:
+            self.build_platlib = os.path.join (self.build_base, 'platlib')
 
 
     def run (self):
 
-        self.set_final_options ()
-
         # For now, "build" means "build_py" then "build_ext".  (Eventually
         # it should also build documentation.)
 
diff --git a/Lib/distutils/command/install.py b/Lib/distutils/command/install.py
index 0e4ad3f..cd12f6f 100644
--- a/Lib/distutils/command/install.py
+++ b/Lib/distutils/command/install.py
@@ -16,16 +16,16 @@
 class Install (Command):
 
     options = [('prefix=', None, "installation prefix"),
-               ('execprefix=', None,
+               ('exec-prefix=', None,
                 "prefix for platform-specific files"),
 
                # Build directories: where to install from
                ('build-base=', None,
                 "base build directory"),
                ('build-lib=', None,
-                "build directory for non-platform-specific library files"),
+                "build directory for pure Python modules"),
                ('build-platlib=', None,
-                "build directory for platform-specific library files"),
+                "build directory for extension modules"),
 
                # Installation directories: where to put modules and packages
                ('install-lib=', None,
@@ -113,11 +113,11 @@
         # to fix things.
 
         # Figure out the build directories, ie. where to install from
-        self.set_peer_option ('build', 'basedir', self.build_base)
+        self.set_peer_option ('build', 'build_base', self.build_base)
         self.set_undefined_options ('build',
-                                    ('basedir', 'build_base'),
-                                    ('libdir', 'build_lib'),
-                                    ('platdir', 'build_platlib'))
+                                    ('build_base', 'build_base'),
+                                    ('build_lib', 'build_lib'),
+                                    ('build_platlib', 'build_platlib'))
 
         # Figure out actual installation directories; the basic principle
         # is: if the user supplied nothing, then use the directories that
@@ -275,8 +275,6 @@
 
     def run (self):
 
-        self.set_final_options ()
-
         # Obviously have to build before we can install
         self.run_peer ('build')
 
diff --git a/Lib/distutils/command/install_ext.py b/Lib/distutils/command/install_ext.py
index 360a802..3fb756c 100644
--- a/Lib/distutils/command/install_ext.py
+++ b/Lib/distutils/command/install_ext.py
@@ -11,28 +11,27 @@
 
 class InstallExt (Command):
 
-    options = [('dir=', 'd', "directory to install to"),
+    options = [('install-dir=', 'd', "directory to install to"),
                ('build-dir=','b', "build directory (where to install from)"),
               ]
 
     def set_default_options (self):
         # let the 'install' command dictate our installation directory
-        self.dir = None
+        self.install_dir = None
         self.build_dir = None
 
     def set_final_options (self):
         self.set_undefined_options ('install',
                                     ('build_platlib', 'build_dir'),
-                                    ('install_site_platlib', 'dir'))
+                                    ('install_site_platlib', 'install_dir'))
 
     def run (self):
-        self.set_final_options ()
 
         # Dump the entire "build/platlib" directory (or whatever it really
         # is; "build/platlib" is the default) to the installation target
         # (eg. "/usr/local/lib/python1.5/site-packages").  Note that
         # putting files in the right package dir is already done when we
         # build.
-        outfiles = self.copy_tree (self.build_dir, self.dir)
+        outfiles = self.copy_tree (self.build_dir, self.install_dir)
 
 # class InstallExt
diff --git a/Lib/distutils/command/install_lib.py b/Lib/distutils/command/install_lib.py
index a2ba16c..978bb3b 100644
--- a/Lib/distutils/command/install_lib.py
+++ b/Lib/distutils/command/install_lib.py
@@ -8,7 +8,7 @@
 
 class InstallPy (Command):
 
-    options = [('dir=', 'd', "directory to install to"),
+    options = [('install-dir=', 'd', "directory to install to"),
                ('build-dir=','b', "build directory (where to install from)"),
                ('compile', 'c', "compile .py to .pyc"),
                ('optimize', 'o', "compile .py to .pyo (optimized)"),
@@ -17,7 +17,7 @@
 
     def set_default_options (self):
         # let the 'install' command dictate our installation directory
-        self.dir = None
+        self.install_dir = None
         self.build_dir = None
         self.compile = 1
         self.optimize = 1
@@ -39,18 +39,16 @@
         # install (target) directory, and whether to compile .py files.
         self.set_undefined_options ('install',
                                     ('build_lib', 'build_dir'),
-                                    (dir_option, 'dir'),
+                                    (dir_option, 'install_dir'),
                                     ('compile_py', 'compile'),
                                     ('optimize_py', 'optimize'))
 
 
     def run (self):
 
-        self.set_final_options ()
-
         # Dump entire contents of the build directory to the installation
         # directory (that's the beauty of having a build directory!)
-        outfiles = self.copy_tree (self.build_dir, self.dir)
+        outfiles = self.copy_tree (self.build_dir, self.install_dir)
                    
         # (Optionally) compile .py to .pyc
         # XXX hey! we can't control whether we optimize or not; that's up
diff --git a/Lib/distutils/command/install_py.py b/Lib/distutils/command/install_py.py
index a2ba16c..978bb3b 100644
--- a/Lib/distutils/command/install_py.py
+++ b/Lib/distutils/command/install_py.py
@@ -8,7 +8,7 @@
 
 class InstallPy (Command):
 
-    options = [('dir=', 'd', "directory to install to"),
+    options = [('install-dir=', 'd', "directory to install to"),
                ('build-dir=','b', "build directory (where to install from)"),
                ('compile', 'c', "compile .py to .pyc"),
                ('optimize', 'o', "compile .py to .pyo (optimized)"),
@@ -17,7 +17,7 @@
 
     def set_default_options (self):
         # let the 'install' command dictate our installation directory
-        self.dir = None
+        self.install_dir = None
         self.build_dir = None
         self.compile = 1
         self.optimize = 1
@@ -39,18 +39,16 @@
         # install (target) directory, and whether to compile .py files.
         self.set_undefined_options ('install',
                                     ('build_lib', 'build_dir'),
-                                    (dir_option, 'dir'),
+                                    (dir_option, 'install_dir'),
                                     ('compile_py', 'compile'),
                                     ('optimize_py', 'optimize'))
 
 
     def run (self):
 
-        self.set_final_options ()
-
         # Dump entire contents of the build directory to the installation
         # directory (that's the beauty of having a build directory!)
-        outfiles = self.copy_tree (self.build_dir, self.dir)
+        outfiles = self.copy_tree (self.build_dir, self.install_dir)
                    
         # (Optionally) compile .py to .pyc
         # XXX hey! we can't control whether we optimize or not; that's up
