Many small edits.
diff --git a/man/fonts b/man/fonts
new file mode 100755
index 0000000..238145d
--- /dev/null
+++ b/man/fonts
@@ -0,0 +1,10 @@
+# mkfile rules to get fonts in Lucida Sans.
+# if you want to use Times, change these next lines to
+# MAN=mantimes
+# FONTS=''
+MAN=man
+FONTS='.fp 1 R LucidaSans
+.fp 2 I LucidaSansI
+.fp 3 B LucidaSansB
+.fp 5 L LucidaCW
+'
diff --git a/man/man1/0intro.1 b/man/man1/0intro.1
new file mode 100644
index 0000000..610e791
--- /dev/null
+++ b/man/man1/0intro.1
@@ -0,0 +1,300 @@
+.TH INTRO 1
+.SH NAME
+intro \- introduction to Plan 9 from User Space
+.SH DESCRIPTION
+Plan 9 is a distributed computing environment built
+at Bell Labs starting in the late 1980s.
+The system can be obtained from Bell Labs at
+.B http://plan9.bell-labs.com/plan9
+and runs on PCs and a variety of other platforms.
+Plan 9 became a convenient platform for experimenting
+with new ideas, applications, and services.
+.PP
+Plan 9 from User Space provides many of the ideas,
+applications, and services from Plan 9
+on Unix-like systems.
+It runs on
+FreeBSD (x86),
+Linux (x86 and PowerPC),
+Mac OS X (PowerPC),
+OpenBSD (x86),
+and
+SunOS (Sparc).
+.SS Commands
+Plan 9 from User Space expects its own directory tree,
+conventionally
+.BR /usr/local/plan9 .
+When programs need to access files in the tree,
+they expect the
+.B $PLAN9
+environment variable 
+to contain the name of the root of the tree.
+See
+.IR install (8)
+for details about installation.
+.PP
+Many of the familiar Unix commands,
+for example
+.IR cat (1),
+.IR ls (1),
+and
+.IR wc (1),
+are present, but in their Plan 9 forms:
+.I cat
+takes no arguments,
+.I ls
+does not columnate its output when printing to a terminal,
+and
+.I wc
+counts UTF characters.
+In some cases, the differences are quite noticeable:
+.IR grep (1)
+and
+.IR sed (1)
+expect Plan 9 regular expressions
+(see
+.IR regexp (7)),
+which are closest to what Unix calls extended regular expressions.
+Because of these differences, it is not recommended to put 
+.B $PLAN9/bin
+before the usual system
+.B bin
+directories in your search path.
+Instead, put it at the end of your path and use the
+.IR 9 (1)
+script when you want to invoke the Plan 9 version of a
+traditional Unix command.
+.PP
+Occasionally the Plan 9 programs have been
+changed to adapt to Unix.
+.IR Mk (1)
+now allows mkfiles to choose their own shell,
+and
+.IR rc (1)
+has a
+.I ulimit
+builtin and manages
+.BR $PATH .
+.PP
+Many of the graphical programs from Plan 9 are present,
+including
+.IR sam (1)
+and
+.IR acme (1).
+An X11 window manager
+.IR rio (1)
+mimics Plan 9's window system, with command windows
+implemented by the external program
+.IR 9term (1).
+Following the style of X Windows, these programs run in new
+windows rather than the one in which they are invoked.
+They all take a
+.B -W
+option to specify the size and placement of the new window.
+The argument is one of
+\fIwidth\^\^\fLx\fI\^\^height\fR,
+\fIwidth\^\^\fLx\fI\^\^height\^\^\fL@\fI\^\^xmin\fL,\fIxmax\fR,
+\fL'\fIxmin ymin xmax ymax\fL'\fR,
+\fRor
+\fIxmin\fL,\fIymin\fL,\fIxmax\fL,\fIymax\fR.
+.PP
+The
+.IR plumber (4)
+helps to connect the various Plan 9 programs together,
+and fittings like
+.IR web (1)
+connect it to external programs such as web browsers;
+one can click on a URL in
+.I acme
+and see the page load in
+.IR Firefox .
+.SS User-level file servers
+In Plan 9, user-level file servers present file trees via the Plan 9 file protocol, 9P.
+Processes can mount arbitrary file servers and customize their own name spaces.
+These facilities are used to connect programs.  Clients interact
+with file servers by reading and writing files.
+.PP
+This cannot be done directly on Unix.
+Instead the servers listen for 9P connections on Unix domain sockets;
+clients connect to these sockets and speak 9P directly using the
+.IR 9pclient (3)
+library.
+.IR Intro (4)
+tells more of the story.
+The effect is not as clean as on Plan 9, but it gets the job done
+and still provides a uniform and easy-to-understand mechanism.
+The
+.IR 9p (1)
+client can be used in shell scripts or by hand to carry out
+simple interactions with servers.
+.SS Programming
+The shell scripts
+.I 9c
+and
+.I 9l
+(see
+.IR 9c (1))
+provide a simple interface to the underlying system compiler and linker,
+similar to the 
+.I 2c
+and
+.I 2l
+families on Plan 9.
+.I 9c
+compiles source files, and
+.I 9l
+links object files into executables.
+When using Plan 9 libraries,
+.I 9l
+infers the correct set of libraries from the object files,
+so that no
+.B -l
+options are needed.
+.PP
+The only way to write multithreaded programs is to use the
+.IR thread (3)
+library.
+.IR Rfork (3)
+exists but is not as capable as on Plan 9.
+There are many unfortunate by necessary preprocessor
+diversions to make Plan 9 and Unix libraries coexist.
+See
+.IR intro (3)
+for details.
+.PP
+The debuggers
+.IR acid (1)
+and
+.IR db (1)
+and the debugging library
+.IR mach (3)
+are works in progress.
+They are platform-independent, so that x86 Linux core dumps
+can be inspected on PowerPC Mac OS X machines,
+but they are also fairly incomplete.
+The x86 target is the most mature; initial PowerPC support
+exists; and other targets are unimplemented.
+The debuggers can only inspect, not manipulate, target processes.
+Support for operating system threads and for 64-bit architectures
+needs to be rethought.
+On x86 Linux systems,
+.I acid
+and
+.I db
+can be relied upon to produce reasonable stack traces
+(often in cases when GNU
+.I gdb
+cannot)
+and dump data structures,
+but that it is the extent to which they have been developed and exercised.
+.SS External databases
+Some programs rely on large databases that would be
+cumbersome to include in every release.
+Scripts are provided that download these databases separately.
+These databases can be downloaded separately.  
+See
+.B $PLAN9/dict/README
+and
+.BR $PLAN9/sky/README .
+.SS Porting programs
+The vast majority of the familiar Plan 9 programs 
+have been ported, including the Unicode-aware
+.IR troff (1).
+.PP
+Of the more recent additions to Plan 9,
+the
+.IR secstore (1)
+client has been ported, though
+.I secstored
+has not.
+.IR Vac (1)
+has been ported, though
+.I vacfs
+has not.
+.IR Factotum
+and
+.IR venti
+are in progress.
+.PP
+A backup system providing a dump file system built atop Venti
+is also in progress.
+.SS Porting to new systems
+Porting the tree to new operating systems or architectures
+should be straightforward, as system-specific code has been
+kept to a minimum.  
+The largest pieces of system-specific code are
+.BR <u.h> ,
+which must include the right system files and
+set up the right integer type definitions,
+and
+.IR libthread ,
+which must implement spin locks, operating system thread
+creation, and context switching routines.
+Portable implementations of these using 
+.B <pthread.h>
+and
+.B <ucontext.h>
+already exist.  If your system supports them, you may not
+need to write any system specific code at all.
+.PP
+There are other smaller system dependencies,
+such as the terminal handling code in
+.IR 9term (1)
+and the implementation of
+.IR getcallerpc (3),
+but these are usually simple and are not on the critical
+path for getting the system up and running.
+.SS SEE ALSO
+The system's documentation is these manual pages.
+Many of the man pages have been brought from Plan 9,
+but they have been updated, and others have been written from scratch.
+.PP
+The manual pages are in a Unix style tree, with names like
+.B $PLAN9/man/man1/cat.1
+instead of Plan 9's simpler
+.BR  $PLAN9/man/1/cat ,
+so that the Unix
+.IR man (1)
+utility can handle it.
+Some systems, for example Debian Linux,
+deduce the man page locations from the search path, so that
+adding 
+.B $PLAN9/bin
+to your path is sufficient to cause
+.B $PLAN9/man
+to be consulted for manual pages using the system
+.IR man .
+On other systems, or to look at manual pages with the
+same name as a system page,
+invoke the Plan 9
+.I man
+directly, as in
+.B 9
+.B man
+.BR cat .
+.PP
+The manual sections follow the Unix numbering conventions,
+not the Plan 9 ones.
+.PP
+Section (1) describes general publicly accessible commands.
+.PP
+Section (3) describes C library functions.
+.PP
+Section (4) describes user-level file servers.
+.PP
+Section (7) describes file formats and protocols.
+(On Unix, section (5) is technically for file formats but
+seems now to be used for describing specific files.)
+.PP
+Section (8) describes commands used for system administration.
+.PP
+Section (9p) describes the Plan 9 file protocol 9P.
+.SH DIAGNOSTICS
+In Plan 9, a program's exit status is an arbitrary text string,
+while on Unix it is an integer.
+Section (1) of this manual describes commands as though they
+exit with string statuses.  In fact, exiting with an empty status
+corresponds to exiting with status 0,
+and exiting with any non-empty string corresponds to exiting with status 1.
+See
+.IR exits (3).
diff --git a/man/man1/9c.1 b/man/man1/9c.1
index 4281b81..fb04a29 100644
--- a/man/man1/9c.1
+++ b/man/man1/9c.1
@@ -3,6 +3,14 @@
 9c, 9a, 9l, 9ar \- C compiler, assembler, linker, archiver
 .SH SYNOPSIS
 .B 9c
+[
+.B -I
+.I path
+]
+[
+.B -D
+.I name
+]
 .I file
 \&...
 .PP
@@ -26,7 +34,7 @@
 \&...
 ]
 [
-.BI -l library
+.BI -l name
 \&...
 ]
 .PP
@@ -49,12 +57,24 @@
 compiles the named C
 .I files
 into object files for the current system.
-The system C compiler is invoked with warnings enabled,
-with the symbol
+The system C compiler is invoked with warnings enabled.
+The
+.B -I
+option adds
+.I path
+to the include path,
+and the
+.B -D
+option defines
+.I name
+in the C preprocessor.
+.I 9c
+always
+defines the symbol
 .B PLAN9PORT
-is defined in the C preprocessor, and with
+defined in the C preprocessor and adds
 .B $PLAN9/include
-on the include path.
+to the include path.
 .PP
 .I 9c
 also defines
@@ -74,7 +94,7 @@
 Each
 .B -l
 option specifies that a library named
-.BI lib library .a
+.BI lib name .a
 be found and linked.
 The
 .B -L
@@ -84,6 +104,30 @@
 .B $PLAN9/lib
 already on the library search path.
 .PP
+.I 9l
+searches the named objects and libraries for symbols of the form
+.BI __p9l_autolib_ name \fR,
+which it takes as indication that it should link
+.BI $PLAN9/lib/lib name .a
+as well.
+It also examines such libraries to find their own dependencies.
+A single
+.B -l
+option at the beginning of the command line disables this behavior.
+The symbol
+.BI __p9l_autolib_ name
+is added to an object file by the macro
+.B AUTOLIB( name )\fR,
+defined in
+.B <u.h>.
+Header files associated with libraries contain
+.B AUTOLIB
+annotations; ordinary programs need not use them.
+Due to shortcomings in the implementation, a source file may not
+contain the same
+.B AUTOLIB
+statement multiple times.
+.PP
 .I 9ar
 maintains object file archives called libraries.
 The exact set of valid command keys varies from system to system,
@@ -154,7 +198,7 @@
 the front of the library.
 The table of contents is
 rebuilt whenever the archive is modified.
-.SH EXAMPLE
+.SH EXAMPLES
 .TP
 .L
 9c file1.c file2.c file3.c
@@ -167,6 +211,7 @@
 .L
 9ar rvc lib.a file[12].o
 Archive the first two object files into a library.
+.TP
 .L
 9l -o prog file3.o file4.o lib.a
 Link the final two object files and any necessary objects from the library
diff --git a/man/man1/9p.1 b/man/man1/9p.1
index a90ac4d..017dc0e 100644
--- a/man/man1/9p.1
+++ b/man/man1/9p.1
@@ -110,9 +110,7 @@
 .PP
 To display the contents of the current
 .IR acme (4)
-window (specified by the environment variable
-.BR $winid )
-on standard output:
+window:
 .IP
 .EX
 9p read acme/$winid/body
diff --git a/man/man1/9term.1 b/man/man1/9term.1
index 9a8d0f7..9441dc8 100644
--- a/man/man1/9term.1
+++ b/man/man1/9term.1
@@ -1,6 +1,6 @@
 .TH 9TERM 1
 .SH NAME
-9term, label \- terminal windows
+9term \- terminal windows
 .SH SYNOPSIS
 .B 9term
 [
@@ -14,14 +14,11 @@
 .I cmd
 \&...
 ]
-.PP
-.B label
-.I name
 .SH DESCRIPTION
 .I 9term
 is a terminal window program for the X Window System,
 providing an interface similar to that used on Plan 9.
-.SS Commands
+.SS Command
 The
 .I 9term
 command starts a new window.
@@ -59,15 +56,6 @@
 runs the given command in the window, or 
 .B $SHELL
 if no command is given.
-.PP
-The
-.I label
-command changes a window's identifying name by
-echoing a special control code that both
-.I 9term
-and
-.IR xterm (1)
-understand.
 .SS Text windows
 Characters typed on the keyboard
 collect in the window to form
@@ -152,7 +140,7 @@
 that it is not delivered to a program when read.
 Thus on an empty line an EOT serves to deliver an end-of-file indication:
 the read will return zero characters.
-Like newlines, unread EOTs may be successfully edited out of the text.
+.\" Like newlines, unread EOTs may be successfully edited out of the text.
 The BS character (control-H) erases the character before the selected text.
 The ETB character (control-W) erases any nonalphanumeric characters, then
 the alphanumeric word just before the selected text.
@@ -202,6 +190,10 @@
 relies on the kernel's terminal processing to handle
 EOT and DEL, so the terminal must be set up with EOT
 as the ``eof'' character and DEL as the ``intr'' character.
+.I 9term
+runs
+.IR stty (1)
+to establish this when the terminal is created.
 .PP
 Normally, written output to a window blocks when
 the text reaches the end of the screen and the terminal
@@ -214,7 +206,7 @@
 Most programs run with echo enabled.
 In this mode,
 .I 9term
-display and allows editing of the input.
+displays and allows editing of the input.
 Some programs, typically those reading passwords,
 run with echo disabled.
 In this mode,
@@ -279,9 +271,23 @@
 containing the selection (typing cursor).
 A typical use of this feature is to tell the editor to find the source of an error
 by plumbing the file and line information in a compiler's diagnostic.
+.PP
+Each
+.I 9term
+listens for connections on a Unix socket.
+When a client connects, the 
+.I 9term
+writes the window contents to the client and then hangs up.
+.I 9term
+installs the name of this socket in the environment as
+.B $text9term
+before running
+.IR cmd .
 .SH SOURCE
 .B \*9/src/cmd/9term
 .SH BUGS
 There should be a program to toggle the current window's hold mode.
 .PP
 Unix makes everything harder.
+.SH SEE ALSO
+.IR wintext (1)
diff --git a/man/man1/INDEX b/man/man1/INDEX
index 0f75165..fcd708c 100644
--- a/man/man1/INDEX
+++ b/man/man1/INDEX
@@ -1,10 +1,12 @@
+0intro 0intro.1
+intro 0intro.1
+9 9.1
 9a 9c.1
 9ar 9c.1
 9c 9c.1
 9l 9c.1
 9p 9p.1
 9term 9term.1
-label 9term.1
 acid acid.1
 acidtypes acid.1
 acme acme.1
@@ -27,13 +29,12 @@
 auxclog clog.1
 clog clog.1
 cmp cmp.1
+cmapcube colors.1
 colors colors.1
-getmap colors.1
 comm comm.1
 core core.1
 crop crop.1
 iconv crop.1
-clock date.1
 date date.1
 db db.1
 dc dc.1
@@ -93,6 +94,7 @@
 ls ls.1
 lookman man.1
 man man.1
+sig man.1
 map map.1
 mapd map.1
 mapdemo map.1
@@ -142,7 +144,6 @@
 aescbc secstore.1
 ipso secstore.1
 secstore secstore.1
-9sed sed.1
 sed sed.1
 seq seq.1
 sleep sleep.1
diff --git a/man/man1/acid.1 b/man/man1/acid.1
index b1f2cd0..e76aeb2 100644
--- a/man/man1/acid.1
+++ b/man/man1/acid.1
@@ -4,7 +4,7 @@
 .SH SYNOPSIS
 .B acid
 [
-.BI -l " libfile
+.BI -l " library
 ]
 [
 .B -wq
@@ -49,7 +49,7 @@
 A program to be debugged may be specified by the process id of
 a running or defunct process,
 or by the name of the program's text file 
-.RB ( 8.out
+.RB ( a.out
 by default).
 At the prompt,
 .I acid
@@ -514,13 +514,13 @@
 .SH BUGS
 There is no way to redirect the standard input and standard output
 of a new process.
-.br
+.PP
 Source line selection near the beginning of a file may pick
 an adjacent file.
-.br
+.PP
 With the extant stepping commands, one cannot step through instructions
 outside the text segment and it is hard to debug across process forks.
-.br
+.PP
 Breakpoints do not work yet.
 Therefore, commands such as
 .BR step ,
diff --git a/man/man1/acme.1 b/man/man1/acme.1
index 56a6dfd..df01fca 100644
--- a/man/man1/acme.1
+++ b/man/man1/acme.1
@@ -71,7 +71,7 @@
 .RB ( -F )
 option sets the main font, usually variable-pitch (alternate, usually fixed-pitch);
 the default is
-.B /lib/font/bit/lucidasans/euro.8.font
+.B /usr/local/plan9/font/lucidasans/euro.8.font
 .RB ( \&.../lucm/unicode.9.font ).
 Tab intervals are set to the width of 4 (or the value of
 .BR $tabstop )
@@ -140,7 +140,7 @@
 if any of them needs attention.)
 The layout box in a window is normally white; when it is black in the center,
 it records that the file is `dirty':
-.I Acme
+.I acme
 believes it is modified from its original
 contents.
 .PP
@@ -455,26 +455,31 @@
 the directory from which the command was run, which will be created if
 necessary.
 For example, in a window
-.B /adm/users
+.B /etc/passwd
 executing
 .B pwd
 will produce the output
-.B /adm
+.B /etc
 in a (possibly newly-created) window labeled
-.BR /adm/+Errors ;
+.BR /etc/+Errors ;
 in a window containing
-.B \*9/src/cmd/sam/sam.c
+.B /home/rob/sam/sam.c
 executing
 .B mk
 will run
 .IR mk (1)
 in
-.BR \*9/src/cmd/sam ,
+.BR /home/rob/sam ,
 producing output in a window labeled
-.BR \*9/src/cmd/sam/+Errors .
+.BR /home/rob/sam/+Errors .
 The environment of such commands contains the variable
 .B $%
-with value set to the filename of the window in which the command is run.
+with value set to the filename of the window in which the command is run,
+and
+.B $winid
+set to the window's id number
+(see
+.IR acme (4)).
 .SS "Mouse button 3
 Pointing at text with button 3 instructs
 .I acme
@@ -586,7 +591,7 @@
 window and runs a
 .I command
 (default
-.BR /bin/rc )
+.BR $SHELL )
 in it, turning the window into something analogous to an
 .IR rio (1)
 window.
diff --git a/man/man1/acmeevent.1 b/man/man1/acmeevent.1
index 31103d6..d5ff083 100644
--- a/man/man1/acmeevent.1
+++ b/man/man1/acmeevent.1
@@ -132,32 +132,92 @@
 a button 2 action in the tag
 .RB ( x ).
 .TP
-.I q0
-
+.I q0\fR, \fPq1
+The character addresses of the action.
 .TP
+.I eq0\fR, \fPq1
+The expanded character addresses of the action.
+If the text indicated by
+.IR q0 ,
 .I q1
-
-.TP
-.I eq0
-
-.TP
+is a null string that has a non-null expansion,
+.IR eq0 ,
 .I eq1
-
+are the addresses of the expansion.
+Otherwise they are the same as
+.IR q0 ,
+.IR q1 .
 .TP
 .I flag
-
+.I Flag
+is a bitwise OR (reported decimally) of the following:
+1 if the text indicated is recognized as an
+.I acme
+built-in command;
+2 if the text indicated is a null string that has a non-null expansion
+(see
+.IR eq0 ,
+.I eq1
+above);
+8 if the command has an extra (chorded) argument
+(see
+.I chordarg
+below).
+.I Flag
+remains from the
+.IR acme (4)
+event format.
+Because
+.IR eq0 ,
+.IR eq1 ,
+and
+.I chordarg
+are explicit in each event
+(unlike in
+.IR acme (4)
+events),
+.I flag
+can usually be ignored.
 .TP
 .I textlen
-
+The length of the action text (or its expansion) for button 2 and button 3 events in characters.
 .TP
 .I text
-
+If
+.I textlen
+is less than 256 chracters,
+.I text
+is the action text itself.
+Otherwise it is an empty string and must be read from the
+.B data
+file.
 .TP
 .I chordarg
-
+The chorded argument for an action.
 .TP
 .I chordorigin
-
+If the chord argument is in the body of a named window,
+.I chordorigin
+specifies the full address of the argument,
+as in
+.BR /etc/group:#123,#234 .
+.PD
+.PP
+To experiment with
+.IR acmeevent ,
+create an empty window in
+.I acme
+(using
+.IR New ), type
+.IP
+.EX
+9p read acme/$winid/event | acmeevent
+.EE
+.LP
+inside it, and execute it.
+Actions performed on the window will be printed as events in the
+.B +Errors
+window.
 .PP
 .I Acme.rc
 is a library of
diff --git a/man/man1/ascii.1 b/man/man1/ascii.1
index d145e04..0857805 100644
--- a/man/man1/ascii.1
+++ b/man/man1/ascii.1
@@ -39,7 +39,7 @@
 .PP
 .B look
 .I hex
-.B /lib/unicode
+.B \*9/lib/unicode
 .SH DESCRIPTION
 .I Ascii
 prints the
@@ -122,7 +122,7 @@
 may be unhelpful if the characters printed are not available in the current font.
 .PP
 The file
-.B /lib/unicode
+.B \*9/lib/unicode
 contains a
 table of characters and descriptions, sorted in hexadecimal order,
 suitable for
@@ -143,19 +143,18 @@
 .B "unicode 2200-22f1"
 Print a table of miscellaneous mathematical symbols.
 .TP
-.B "look 039 /lib/unicode"
+.B "look 039 \*9/lib/unicode"
 See the start of the Greek alphabet's encoding in the Unicode Standard.
 .SH FILES
-.TF /lib/unicode
 .TP
-.B /lib/unicode
+.B \*9/lib/unicode
 table of characters and descriptions.
 .SH SOURCE
 .B \*9/src/cmd/ascii.c
 .br
 .B \*9/src/cmd/unicode.c
 .SH "SEE ALSO"
-.IR look (1)
+.IR look (1),
 .IR tcs (1),
 .IR utf (7),
 .IR font (7)
diff --git a/man/man1/astro.1 b/man/man1/astro.1
index be6241d..af5e7af 100644
--- a/man/man1/astro.1
+++ b/man/man1/astro.1
@@ -35,7 +35,7 @@
 If
 .B l
 is missing, the initial position is read from the file
-.BR /lib/sky/here .
+.BR \*9/sky/here .
 .TP
 .B c
 Report for
@@ -105,12 +105,11 @@
 but in steady state
 usually refers to the last interesting comet (currently Hale-Bopp, C/1995 O1).
 .SH FILES
-.TF /lib/sky/estartab
 .TP
-.B /lib/sky/estartab
+.B \*9/sky/estartab
 ecliptic star data
 .TP
-.B /lib/sky/here
+.B \*9/sky/here
 default latitude (N), longitude (W), and elevation (meters)
 .SH SOURCE
 .B \*9/src/cmd/astro
diff --git a/man/man1/bc.1 b/man/man1/bc.1
index bd180a5..5719434 100644
--- a/man/man1/bc.1
+++ b/man/man1/bc.1
@@ -267,7 +267,7 @@
 for(i=1; i<=10; i++) print e(i)
 .EE
 .SH FILES
-.B /sys/lib/bclib
+.B \*9/lib/bclib
 mathematical library
 .SH SOURCE
 .B \*9/src/cmd/bc.y
@@ -281,12 +281,12 @@
 or
 .L !
 operators.
-.br
+.PP
 A
 .L for
 statement must have all three
 .LR E s.
-.br
+.PP
 A
 .L quit
 is interpreted when read, not when executed.
diff --git a/man/man1/bundle.1 b/man/man1/bundle.1
index 977ea4c..36bcd8d 100644
--- a/man/man1/bundle.1
+++ b/man/man1/bundle.1
@@ -41,7 +41,7 @@
 then do
 .TP
 .L
-cd gift; rc horse; mk
+cd gift; sh horse; mk
 .SH SOURCE
 .B \*9/bin/bundle
 .SH SEE ALSO
@@ -53,5 +53,5 @@
 .SH BUGS
 .I Bundle
 will not create directories and is unsatisfactory for non-text files.
-.br
+.PP
 Beware of gift horses.
diff --git a/man/man1/cal.1 b/man/man1/cal.1
index 0709a5d..2ccb24f 100644
--- a/man/man1/cal.1
+++ b/man/man1/cal.1
@@ -39,7 +39,7 @@
 .SH BUGS
 The year is always considered to start in January even though this
 is historically naive.
-.br
+.PP
 Beware that
 .L "cal 90"
 refers to the early Christian era,
diff --git a/man/man1/calendar.1 b/man/man1/calendar.1
index 9a9e20e..14c6f91 100644
--- a/man/man1/calendar.1
+++ b/man/man1/calendar.1
@@ -15,7 +15,7 @@
 .SH DESCRIPTION
 .I Calendar
 reads the named files, default
-.BR /usr/$user/lib/calendar ,
+.BR $HOME/lib/calendar ,
 and writes to standard output any lines
 containing today's or tomorrow's date.
 Examples of recognized date formats are 
@@ -45,9 +45,9 @@
 To have your calendar mailed to you every day, use
 .IR cron (8).
 .SH FILES
-.TF /usr/$user/lib/calendar
+.TF $HOME/lib/calendar
 .TP
-.B /usr/$user/lib/calendar
+.B $HOME/lib/calendar
 personal calendar
 .SH SOURCE
 .B \*9/src/cmd/calendar.c
diff --git a/man/man1/cat.1 b/man/man1/cat.1
index f758beb..0738206 100644
--- a/man/man1/cat.1
+++ b/man/man1/cat.1
@@ -17,7 +17,7 @@
 .I file ...
 ]
 .br
-nobs
+.B nobs
 [
 .I file ...
 ]
diff --git a/man/man1/colors.1 b/man/man1/colors.1
index d72b5bf..9e85062 100644
--- a/man/man1/colors.1
+++ b/man/man1/colors.1
@@ -1,6 +1,6 @@
 .TH COLORS 1
 .SH NAME
-getmap, colors \- display color map
+colors, cmapcube \- display color map
 .SH SYNOPSIS
 .PP
 .B colors
@@ -9,16 +9,13 @@
 .B -x
 ]
 .PP
-.B getmap
+.B cmapcube
 [
-.I colormap
+.B -nbw
 ]
 .SH DESCRIPTION
 .I Colors
-presents a grid showing the colors in the current color map.
-If the display is true color,
-.I colors
-shows a grid of the RGBV color map
+presents a grid showing the colors in the RGBV color map
 (see
 .IR color (7)).
 .PP
@@ -37,36 +34,22 @@
 .PP
 A menu on mouse button 3 contains a single entry, to exit the program.
 .PP
-On 8-bit color-mapped displays,
-.I getmap
-loads the display's color map (default
-.BR rgbv ).
-The named
-.I colormap
-can be a file in the current directory or in the standard repository
-.BR /lib/cmap .
-It can also be a string of the form
-.B gamma
-or
-.BI gamma N\f1 ,
-where
-.I N
-is a floating point value for the gamma, defining the contrast for a monochrome map.
-Similarly,
-.B rgamma
+.I Cmapcube
+presents the same colors but in a 3-dimensional cube.
+Dragging with button 1 rotates the cube.
+Clicking on a color with button 2
+displays the map index for that color.
+Clicking button 3 exits.
+.PP
+The
+.B -n
+option disables drawing of the color squares.
+The
+.B -b
 and
-.BI rgamma N
-define a reverse-video monochrome map.
-Finally, the names
-.B screen
-or
-.B display
-or
-.B vga
-are taken as synonyms for the current color map stored in the display hardware.
-.SH FILES
-.B /lib/cmap
-directory of color map files
+.B -w
+options set the background (default grey)
+to black or white.
 .SH SOURCE
 .B \*9/src/cmd/draw/colors.c
 .SH SEE ALSO
diff --git a/man/man1/core.1 b/man/man1/core.1
index c051386..df56c92 100644
--- a/man/man1/core.1
+++ b/man/man1/core.1
@@ -44,3 +44,6 @@
 .IR acid (1),
 .IR db (1),
 .IR core (5)
+.SH BUGS
+.I Core
+has not been written.
diff --git a/man/man1/date.1 b/man/man1/date.1
index 1936e42..1ce96f3 100644
--- a/man/man1/date.1
+++ b/man/man1/date.1
@@ -1,6 +1,6 @@
 .TH DATE 1
 .SH NAME
-date, clock \- date and time
+date \- date and time
 .SH SYNOPSIS
 .B date
 [
diff --git a/man/man1/db.1 b/man/man1/db.1
index fafa719..38c8fc1 100644
--- a/man/man1/db.1
+++ b/man/man1/db.1
@@ -912,14 +912,6 @@
 .B write()
 in extant process 27:
 .IP
-.de EX
-.RS
-.ft B
-.nf
-..
-.de EE
-.RE
-..
 .EX
 % db 27
 :h
diff --git a/man/man1/dc.1 b/man/man1/dc.1
index d6bc35c..5394580 100644
--- a/man/man1/dc.1
+++ b/man/man1/dc.1
@@ -223,15 +223,15 @@
 \fLv\fR	max(\fIs,sa\fR)
 .fi
 .SH EXAMPLES
+.LP
+Print the first ten values of
+.IR n !
+.IP
 .EX
 [la1+dsa*pla10>y]sy
 0sa1
 lyx
 .EE
-.ns
-.IP
-Print the first ten values of
-.IR n !
 .SH SOURCE
 .B \*9/src/cmd/dc.c
 .SH "SEE ALSO"
diff --git a/man/man1/deroff.1 b/man/man1/deroff.1
index 8911601..9d159f9 100644
--- a/man/man1/deroff.1
+++ b/man/man1/deroff.1
@@ -112,6 +112,6 @@
 delimiters for
 .I eqn
 are in effect. 
-.br
+.PP
 Text inside macros is emitted at place of
 definition, not place of call.
diff --git a/man/man1/dict.1 b/man/man1/dict.1
index de987d9..0c26f38 100644
--- a/man/man1/dict.1
+++ b/man/man1/dict.1
@@ -182,12 +182,10 @@
 .BI /adict/ dict /
 window.
 .SH FILES
-.B /lib/dict/oed2
-.br
-.B /lib/dict/oed2index
-.br
-Other files in
-.BR /lib .
+.TP
+.B \*9/dict
+dictionaries
+.PD
 .SH "SEE ALSO"
 .IR regexp (7)
 .SH SOURCE
diff --git a/man/man1/diff.1 b/man/man1/diff.1
index 8d3289e..237fc57 100644
--- a/man/man1/diff.1
+++ b/man/man1/diff.1
@@ -148,7 +148,7 @@
 .BR -e " or"
 .BR -f " option are naive about"
 creating lines consisting of a single `\fB.\fR'.
-.br
+.PP
 When running
 .I diff
 on directories, the notion of what is a text
diff --git a/man/man1/doctype.1 b/man/man1/doctype.1
index 02a3601..da33653 100644
--- a/man/man1/doctype.1
+++ b/man/man1/doctype.1
@@ -4,8 +4,13 @@
 .SH SYNOPSIS
 .B doctype
 [
-.I option ...
-] [
+.B -n
+]
+[
+.B -T
+.I dev
+]
+[
 .I file
 ]
 \&...
@@ -32,7 +37,9 @@
 .I nroff
 instead of
 .IR troff .
-Other options are passed to
+The
+.B -T
+option is passed to
 .IR troff .
 .SH EXAMPLES
 .TP
diff --git a/man/man1/ed.1 b/man/man1/ed.1
index d218d65..00eb095 100644
--- a/man/man1/ed.1
+++ b/man/man1/ed.1
@@ -49,7 +49,7 @@
 If no 
 .I file
 is given, make
-.B /fd/1
+.B /dev/stdout
 the remembered file; see the
 .L e
 command below.
diff --git a/man/man1/fortune.1 b/man/man1/fortune.1
index 8c9c562..96c64b1 100644
--- a/man/man1/fortune.1
+++ b/man/man1/fortune.1
@@ -13,11 +13,11 @@
 .I file
 is specified, the saying is taken from that file;
 otherwise it is selected from
-.BR /sys/games/lib/fortunes .
+.BR \*9/lib/fortunes .
 .SH FILES
-.B /sys/games/lib/fortunes
+.B \*9/lib/fortunes
 .br
-.B /sys/games/lib/fortunes.index
+.B \*9/lib/fortunes.index
 \ \ fast lookup table, maintained automatically
 .SH SOURCE
 .B \*9/src/cmd/fortune.c
diff --git a/man/man1/grap.1 b/man/man1/grap.1
index d9dae3f..beda727 100644
--- a/man/man1/grap.1
+++ b/man/man1/grap.1
@@ -254,7 +254,7 @@
 .BR star ,
 .BR plus ,
 etc., in
-.BR /sys/lib/grap.defines ,
+.BR \*9/lib/grap.defines ,
 which is included if it exists.
 .PP
 .I var
@@ -399,9 +399,9 @@
 .vs
 .EE
 .SH FILES
-.TF /sys/lib/grap.defines
+.TF \*9/lib/grap.defines
 .TP
-.B /sys/lib/grap.defines
+.B \*9/lib/grap.defines
 definitions of standard plotting characters, e.g., bullet
 .SH SOURCE
 .B \*9/src/cmd/grap
diff --git a/man/man1/grep.1 b/man/man1/grep.1
index 7ae84a9..52550b0 100644
--- a/man/man1/grep.1
+++ b/man/man1/grep.1
@@ -10,6 +10,7 @@
 [
 .I file ...
 ]
+.PP
 .B g
 [
 .I option ...
diff --git a/man/man1/idiff.1 b/man/man1/idiff.1
index fda8458..e8d3761 100644
--- a/man/man1/idiff.1
+++ b/man/man1/idiff.1
@@ -14,7 +14,8 @@
 merges 
 .I file1
 and 
-.IR file2 .
+.I file2
+onto standard output.
 Wherever
 .I file1
 and
@@ -23,7 +24,8 @@
 .I idiff
 displays the differences in the style of
 .RB `` diff
-.RB -n ''
+.BR -n ''
+on standard error
 and prompts the user to select a chunk.
 Valid responses are:
 .TP
@@ -54,9 +56,10 @@
 .B -b
 and
 .B -w
-flags
-are simply
-passed through to
+flags,
+if passed,
+are
+passed to
 .IR diff .
 .SH FILES
 .B /tmp/idiff.*
@@ -68,5 +71,3 @@
 Kernighan and Pike,
 .IR "The Unix Programming Environment" ,
 Prentice-Hall, 1984.
-.SH BUGS
-This is a poorly-written manual page.
diff --git a/man/man1/join.1 b/man/man1/join.1
index 6b0eeee..1c0ec9f 100644
--- a/man/man1/join.1
+++ b/man/man1/join.1
@@ -143,5 +143,5 @@
 the sequence is that of
 .BI "sort -t" x
 .BI -k y , y\f1.
-.br
+.PP
 One of the files must be randomly accessible.
diff --git a/man/man1/kill.1 b/man/man1/kill.1
index 5719f16..5b61d8a 100644
--- a/man/man1/kill.1
+++ b/man/man1/kill.1
@@ -13,11 +13,6 @@
 .PP
 .B stop
 .I name ...
-.PP
-.B broke
-[
-.I user
-]
 .SH DESCRIPTION
 .I Kill
 prints commands that will cause all processes with 
@@ -67,3 +62,8 @@
 .SH "SEE ALSO"
 .IR ps (1),
 .IR notify (3)
+.SH BUGS
+.I Stop
+and
+.I start
+should limit themselves to currently running or stopped processes.
diff --git a/man/man1/lex.1 b/man/man1/lex.1
index c0f43e3..6955e79 100644
--- a/man/man1/lex.1
+++ b/man/man1/lex.1
@@ -77,5 +77,5 @@
 .SH BUGS
 Cannot handle
 .SM UTF.
-.br
+.PP
 The asteroid to kill this dinosaur is still in orbit.
diff --git a/man/man1/look.1 b/man/man1/look.1
index ddd50af..02d2cb4 100644
--- a/man/man1/look.1
+++ b/man/man1/look.1
@@ -77,10 +77,9 @@
 .IR grep (1)
 .SH DIAGNOSTICS
 The exit status is
-.B \&"not found"
+.RB `` "not found" ''
 if no match is found, and
-.B \&"no dictionary"
+.RB `` "no dictionary" ''
 if
 .I file
 or the default dictionary cannot be opened.
-
diff --git a/man/man1/ls.1 b/man/man1/ls.1
index 96877b8..e4c950c 100644
--- a/man/man1/ls.1
+++ b/man/man1/ls.1
@@ -157,6 +157,5 @@
 .br
 .B \*9/bin/lc
 .SH SEE ALSO
-.IR stat (3)
+.IR stat (3),
 .IR mc (1)
-
diff --git a/man/man1/man.1 b/man/man1/man.1
index 8b83e97..f2ecb7d 100644
--- a/man/man1/man.1
+++ b/man/man1/man.1
@@ -1,6 +1,6 @@
 .TH MAN 1
 .SH NAME
-man, lookman \- print or find pages of this manual
+man, lookman, sig \- print or find pages of this manual
 .SH SYNOPSIS
 .B man
 [
@@ -88,17 +88,20 @@
 index for
 .I lookman
 .SH SOURCE
-.B \*9/bin/9man
+.B \*9/bin/man
 .br
 .B \*9/bin/lookman
 .SH "SEE ALSO"
+.IR page (1),
 .IR proof (1)
 .SH BUGS
 The manual was intended to be typeset; some detail is sacrificed on text terminals.
 .PP
 There is no automatic mechanism to keep the indices up to date.
 .PP
-Except for special cases, it doesn't recognize things that should be run through
+Except for special cases,
+.I man
+doesn't recognize things that should be run through
 .I tbl
 and/or
 .IR eqn .
diff --git a/man/man1/map.1 b/man/man1/map.1
index a2d0985..c032002 100644
--- a/man/man1/map.1
+++ b/man/man1/map.1
@@ -634,7 +634,7 @@
 .B /lib/map/*.x
 map indexes
 .TP
-.B /bin/aux/mapd
+.B mapd
 Map driver program
 .SH SOURCE
 .B \*9/src/cmd/map
diff --git a/man/man1/mk.1 b/man/man1/mk.1
index 59b1d0e..caa2d17 100644
--- a/man/man1/mk.1
+++ b/man/man1/mk.1
@@ -1,21 +1,4 @@
 .TH MK 1
-.de EX
-.nf
-.ft B
-..
-.de EE
-.fi
-.ft R
-..
-.de LR
-.if t .BR \\$1 \\$2
-.if n .RB ` \\$1 '\\$2
-..
-.de L
-.nh
-.if t .B \\$1
-.if n .RB ` \\$1 '
-..
 .SH NAME
 mk, membername \- maintain (make) related files
 .SH SYNOPSIS
@@ -313,6 +296,7 @@
 .IR mk .
 A variable assignment argument overrides the first (but not any subsequent)
 assignment to that variable.
+.PP
 The variable
 .B MKFLAGS
 contains all the option arguments (arguments starting with
@@ -324,6 +308,45 @@
 contains all the targets in the call to
 .IR mk .
 .PP
+The variable
+.B MKSHELL
+contains the shell command line
+.I mk
+uses to run recipes.
+If the first word of the command ends in
+.B rc
+or
+.BR rcsh ,
+.I mk
+uses
+.IR rc (1)'s
+quoting rules; otherwise it uses
+.IR sh (1)'s.
+The
+.B MKSHELL
+variable is consulted when the mkfile is read, not when it is executed,
+so that different shells can be used within a single mkfile:
+.IP
+.EX
+MKSHELL=$PLAN9/bin/rc
+use-rc:V:
+	for(i in a b c) echo $i
+
+MKSHELL=sh
+use-sh:V:
+	for i in a b c; do echo $i; done
+.EE
+.LP
+Mkfiles included via
+.B <
+or
+.B <|
+.RI ( q.v. )
+see their own private copy of
+.BR MKSHELL ,
+which always starts set to
+.B sh .
+.PP
 Dynamic information may be included in the mkfile by using a line of the form
 .IP
 \fR<|\fIcommand\fR \fIargs\fR
@@ -510,6 +533,7 @@
 .I Membername
 echoes just the member names of a list of aggregate names.
 It is useful in recipes like:
+.IP
 .EX
 OFILES=a.o b.o
 libc.a(%):N: %
@@ -647,7 +671,7 @@
 .EE
 .SH SEE ALSO
 .IR sh (1),
-.IR regexp9 (7)
+.IR regexp (7)
 .PP
 A. Hume,
 ``Mk: a Successor to Make''
@@ -664,19 +688,18 @@
 This software is a port of the Plan 9 version back to Unix.
 .SH BUGS
 Identical recipes for regular expression meta-rules only have one target.
-.br
+.PP
 Seemingly appropriate input like
 .B CFLAGS=-DHZ=60
 is parsed as an erroneous attribute; correct it by inserting
 a space after the first 
 .LR = .
-.br
+.PP
 The recipes printed by
 .I mk
 before being passed to
-.I sh
+the shell
 for execution are sometimes erroneously expanded
 for printing.  Don't trust what's printed; rely
-on what
-.I sh
+on what the shell
 does.
diff --git a/man/man1/namespace.1 b/man/man1/namespace.1
index 763d9e1..e02a650 100644
--- a/man/man1/namespace.1
+++ b/man/man1/namespace.1
@@ -11,4 +11,5 @@
 .SH SOURCE
 .B \*9/src/cmd/namespace.c
 .SH SEE ALSO
-.IR getns (3)
+.IR getns (3),
+.IR intro (4)
diff --git a/man/man1/news.1 b/man/man1/news.1
index bd9faf2..f3c2aa4 100644
--- a/man/man1/news.1
+++ b/man/man1/news.1
@@ -35,13 +35,13 @@
 select particular news items.
 .PP
 To post a news item, create a file in
-.BR  /lib/news .
-.PP
-You may arrange to receive news automatically by 
-registering your mail address in
-.BR /sys/lib/subscribers .
-A daemon mails recent news
-to all addresses on the list.
+.BR  \*9/news .
+.\" .PP
+.\" You may arrange to receive news automatically by 
+.\" registering your mail address in
+.\" .BR /sys/lib/subscribers .
+.\" A daemon mails recent news
+.\" to all addresses on the list.
 .PP
 Empty news items, and news items named
 .B core
@@ -49,15 +49,14 @@
 .B dead.letter
 are ignored.
 .SH FILES
-.TF /sys/lib/subscribers
 .TP
-.B /lib/news/*
+.B \*9/news/*
 articles
 .TP
 .B $HOME/lib/newstime
 modify time is time news was last read
-.TP
-.B /sys/lib/subscribers
+.\" .TP
+.\" .B /sys/lib/subscribers
 who gets news mailed to them
 .SH SOURCE
 .B \*9/src/cmd/news.c
diff --git a/man/man1/page.1 b/man/man1/page.1
index 609cd07..d320802 100644
--- a/man/man1/page.1
+++ b/man/man1/page.1
@@ -49,7 +49,7 @@
 .IR proof (1).
 .SH "SEE ALSO
 .IR gs (1),
-.IR gv (1)
+.IR gv (1),
 .IR jpg (1),
 .IR proof (1),
 .IR tex (1),
@@ -64,3 +64,11 @@
 leaves temporary files in
 .BR /var/tmp ,
 since it has no way to know when the viewer has exited.
+.PP
+.I Page
+does not handle
+Plan 9 
+.IR image (7)
+files; use
+.I img
+explicitly.
diff --git a/man/man1/plumb.1 b/man/man1/plumb.1
index 4885b90..3fa1625 100644
--- a/man/man1/plumb.1
+++ b/man/man1/plumb.1
@@ -76,14 +76,10 @@
 .B action=showdata
 attribute to the message.
 .SH FILES
-.TF /usr/$user/lib/plumbing
+.TF $HOME/lib/plumbing
 .TP
-.B /usr/$user/lib/plumbing
+.B $HOME/lib/plumbing
 default rules file
-.TP
-.B /mnt/plumb
-mount point for
-.IR plumber (4).
 .SH SOURCE
 .B \*9/src/cmd/plumb
 .SH "SEE ALSO"
diff --git a/man/man1/proof.1 b/man/man1/proof.1
index 27662d0..2a1de08 100644
--- a/man/man1/proof.1
+++ b/man/man1/proof.1
@@ -115,12 +115,11 @@
 .B d
 commands are also available as command line options.
 .SH FILES
-.TF /lib/font/bit/MAP
 .TP
-.B /lib/font/bit/*
+.B \*9/font/*
 fonts
 .TP
-.B /lib/font/bit/MAP
+.B \*9/font/MAP
 how to convert troff output fonts and character names
 into screen fonts and character numbers
 .SH SOURCE
diff --git a/man/man1/ps.1 b/man/man1/ps.1
index 7c23c18..bb655d1 100644
--- a/man/man1/ps.1
+++ b/man/man1/ps.1
@@ -81,7 +81,7 @@
 waiting for more of a critical
 .IR resource .
 .TP
-.BI wchan
+.I wchan
 waiting on the named wait channel
 (on a Unix kernel).
 .PD
diff --git a/man/man1/rc.1 b/man/man1/rc.1
index f89b8f3..e35d625 100644
--- a/man/man1/rc.1
+++ b/man/man1/rc.1
@@ -765,8 +765,7 @@
 .B =
 and its value.
 If the value has more than one component, these
-are separated by SOH
-.RB ( '\e001' )
+are separated by SOH (001)
 characters.
 The string for a function is just the
 .I rc
diff --git a/man/man1/sam.1 b/man/man1/sam.1
index be66d04..b9d46d8 100644
--- a/man/man1/sam.1
+++ b/man/man1/sam.1
@@ -19,6 +19,9 @@
 .B B
 .IB file \fR[\fP: line \fR]
 \&...
+.PP
+.B E
+.I file
 .SH DESCRIPTION
 .I Sam
 is a multi-file editor.
@@ -845,7 +848,7 @@
 .I B
 on
 .I file
-and then waits to exit until
+and then does not exit until
 .I file
 is changed, which is taken as a signal that
 .I file
@@ -858,22 +861,22 @@
 command (by hangup, deleting its window, etc.), modified
 files are saved in an
 executable file,
-.BR $home/sam.save .
+.BR $HOME/sam.save .
 This program, when executed, asks whether to write
 each file back to a external file.
 The answer
 .L y
 causes writing; anything else skips the file.
 .SH FILES
-.TF \*9/src/cmd/samterm
+.TF $HOME/sam.save
 .TP
-.B $home/sam.save
+.B $HOME/sam.save
 .TP
-.B $home/sam.err
+.B $HOME/sam.err
 .TP
 .B \*9/bin/samsave
 the program called to unpack
-.BR $home/sam.save .
+.BR $HOME/sam.save .
 .SH SOURCE
 .TF \*9/src/cmd/samterm
 .TP
@@ -886,6 +889,8 @@
 source for the separate terminal part
 .TP
 .B \*9/bin/B
+.TP
+.B \*9/bin/E
 .SH SEE ALSO
 .IR ed (1),
 .IR sed (1),
diff --git a/man/man1/scat.1 b/man/man1/scat.1
index f5ee897..57369ab 100644
--- a/man/man1/scat.1
+++ b/man/man1/scat.1
@@ -124,7 +124,7 @@
 for the moon and sun, as shown by
 .BR astro .
 The positions are current at the start of
-.I scat 's
+.IR scat 's
 execution; see the
 .B astro
 command in the next section for more information.
@@ -313,20 +313,20 @@
 	expand 1
 	plot
 .EE
-.PP
-Show a pretty galaxy.
-.EX
-	ngc1300
-	plate 10'
-.EE
+.\" .PP
+.\" Show a pretty galaxy.
+.\" .EX
+.\" 	ngc1300
+.\" 	plate 10'
+.\" .EE
 .SH FILES
-.B /lib/sky/*.scat
+.B \*9/sky/*.scat
 .SH SOURCE
 .B \*9/src/cmd/scat
 .SH SEE ALSO
 .IR astro (1)
 .br
-.B /lib/sky/constelnames\ \ 
+.B \*9/sky/constelnames\ \ 
 the three-letter abbreviations of the constellation names.
 .PP
 The data was provided by the Astronomical Data Center at the NASA Goddard
diff --git a/man/man1/secstore.1 b/man/man1/secstore.1
index b50fc32..fb4bcd3 100644
--- a/man/man1/secstore.1
+++ b/man/man1/secstore.1
@@ -127,70 +127,70 @@
 append a new secret,
 and save the updated file back to secstore.
 The final command loads the new secret into the running factotum.
-.PP
-The
-.I ipso
-command packages this sequence into a convenient script to simplify editing of
-.I files
-stored on a secure store.
-It copies the named
-.I files
-into a local
-.IR ramfs (4)
-and invokes
-.IR acme (1)
-on them.  When the editor exits,
-.I ipso
-prompts the user to confirm copying modifed or newly created files back to
-.I secstore.
-If no
-.I file
-is mentioned,
-.I ipso
-grabs all the user's files from
-.I secstore
-for editing.
-.PP
-By default, ipso will edit the
-.I secstore
-files and, if
-one of them is named
-.BR factotum ,
-flush your current keys from factotum and load
-the new ones from the file.
-If you supply any of the
-.BR -e ,
-.BR -f ,
-or
-.BR -l
-options,
-.I ipso
-will just perform the operations you requested, i.e.,
-edit, flush, and/or load.
-.PP
-The
-.B -s
-option of
-.I ipso
-invokes
-.IR sam (1)
-as the editor insted of
-.BR acme ;
-the
-.B -a
-option provides a similar service for files encrypted by
-.I aescbc
-.RI ( q.v. ).
-With the
-.B -a
-option, the full rooted pathname of the
-.I file
-must be specified and all
-.I files
-must be encrypted with the same key.
-Also with
-.BR -a ,
-newly created files are ignored.
+.\" .PP
+.\" The
+.\" .I ipso
+.\" command packages this sequence into a convenient script to simplify editing of
+.\" .I files
+.\" stored on a secure store.
+.\" It copies the named
+.\" .I files
+.\" into a local
+.\" .IR ramfs (4)
+.\" and invokes
+.\" .IR acme (1)
+.\" on them.  When the editor exits,
+.\" .I ipso
+.\" prompts the user to confirm copying modifed or newly created files back to
+.\" .I secstore.
+.\" If no
+.\" .I file
+.\" is mentioned,
+.\" .I ipso
+.\" grabs all the user's files from
+.\" .I secstore
+.\" for editing.
+.\" .PP
+.\" By default, ipso will edit the
+.\" .I secstore
+.\" files and, if
+.\" one of them is named
+.\" .BR factotum ,
+.\" flush your current keys from factotum and load
+.\" the new ones from the file.
+.\" If you supply any of the
+.\" .BR -e ,
+.\" .BR -f ,
+.\" or
+.\" .BR -l
+.\" options,
+.\" .I ipso
+.\" will just perform the operations you requested, i.e.,
+.\" edit, flush, and/or load.
+.\" .PP
+.\" The
+.\" .B -s
+.\" option of
+.\" .I ipso
+.\" invokes
+.\" .IR sam (1)
+.\" as the editor insted of
+.\" .BR acme ;
+.\" the
+.\" .B -a
+.\" option provides a similar service for files encrypted by
+.\" .I aescbc
+.\" .RI ( q.v. ).
+.\" With the
+.\" .B -a
+.\" option, the full rooted pathname of the
+.\" .I file
+.\" must be specified and all
+.\" .I files
+.\" must be encrypted with the same key.
+.\" Also with
+.\" .BR -a ,
+.\" newly created files are ignored.
 .PP
 .I Aescbc
 encrypts and decrypts using AES (Rijndael) in cipher
@@ -205,8 +205,8 @@
 .B -r
 (or a disk crash) is irrevocable.  You are advised to store
 important secrets in a second location.
-.PP
-When using
-.IR ipso ,
-secrets will appear as plain text in the editor window,
-so use the command in private.
+.\" .PP
+.\" When using
+.\" .IR ipso ,
+.\" secrets will appear as plain text in the editor window,
+.\" so use the command in private.
diff --git a/man/man1/sed.1 b/man/man1/sed.1
index b176e43..a2e2b54 100644
--- a/man/man1/sed.1
+++ b/man/man1/sed.1
@@ -1,8 +1,8 @@
 .TH SED 1
 .SH NAME
-9sed \- stream editor
+sed \- stream editor
 .SH SYNOPSIS
-.B 9sed
+.B sed
 [
 .B -n
 ]
@@ -366,7 +366,7 @@
 Delete all but one of each group of empty lines from a
 formatted manuscript.
 .SH SOURCE
-.B \*9/src/cmd/9sed.c
+.B \*9/src/cmd/sed.c
 .SH SEE ALSO
 .IR ed (1), 
 .IR grep (1), 
diff --git a/man/man1/sort.1 b/man/man1/sort.1
index eb0d7f4..e68a53f 100644
--- a/man/man1/sort.1
+++ b/man/man1/sort.1
@@ -19,6 +19,8 @@
 .I ,pos2
 ]
 ] ...
+.br
+\h'0.5in'
 [
 .B -o
 .I output
@@ -210,7 +212,7 @@
 Put temporary files in
 .I dir
 rather than in
-.BR /tmp .
+.BR /var/tmp .
 .ne 4
 .SH EXAMPLES
 .TP
@@ -236,7 +238,7 @@
 A stable sort: input lines that compare equal will 
 come out in their original order.
 .SH FILES
-.BI /tmp/sort. <pid>.<ordinal>
+.BI /var/tmp/sort. <pid>.<ordinal>
 .SH SOURCE
 .B \*9/src/cmd/sort.c
 .SH SEE ALSO
diff --git a/man/man1/spell.1 b/man/man1/spell.1
index 44a1a0e..5d27609 100644
--- a/man/man1/spell.1
+++ b/man/man1/spell.1
@@ -67,7 +67,7 @@
 .B \*9/lib/brspell
 British spelling list
 .TP
-.B /bin/aux/sprog
+.B \*9/bin/sprog
 The actual spelling checker.
 It expects one word per line on standard input,
 and takes the same arguments as
@@ -87,7 +87,7 @@
 The heuristics of
 .IR deroff (1)
 used to excise formatting information are imperfect.
-.br
+.PP
 The spelling list's coverage is uneven;
 in particular biology, medicine, and chemistry, and
 perforce proper names,
diff --git a/man/man1/stats.1 b/man/man1/stats.1
index 85256bd..a6f5ba4 100644
--- a/man/man1/stats.1
+++ b/man/man1/stats.1
@@ -167,13 +167,21 @@
 .PD
 .SH EXAMPLE
 Show the load, memory, interrupts, system calls, context switches,
-and ethernet packets for the local machine, a remote Linux machine 
-.BR tux ,
-and a remote BSD machine
-.BR daemon .
+and ethernet packets for the local machine,
+a remote BSD machine
+.IR daemon ,
+and
+a remote Linux machine 
+.IR tux .
+.I Auxstats
+is not in
+.IR tux 's
+path, so the full path must be given.
 .IP
-.B
-stats -lmisce `hostname` tux:\*9/bin/auxstats daemon
+.EX
+stats -lmisce `hostname` daemon \e
+    tux:\*9/bin/auxstats
+.EE
 .SH SOURCE
 .B \*9/src/cmd/draw/stats.c
 .PP
diff --git a/man/man1/tail.1 b/man/man1/tail.1
index 3681dd3..7b218ce 100644
--- a/man/man1/tail.1
+++ b/man/man1/tail.1
@@ -77,11 +77,11 @@
 Tails relative to the end of the file
 are treasured up in a buffer, and thus
 are limited in length.
-.br
+.PP
 According to custom, option
 .BI + number
 counts lines from 1, and counts
 blocks and bytes from 0.
-.br
+.PP
 .I Tail
 is ignorant of UTF.
diff --git a/man/man1/troff.1 b/man/man1/troff.1
index 5923084..7af3f3c 100644
--- a/man/man1/troff.1
+++ b/man/man1/troff.1
@@ -158,19 +158,19 @@
 Tab settings are assumed to be every
 8 nominal character widths.
 .SH FILES
-.TF /sys/lib/troff/term/*
+.TF \*9/troff/term/*
 .TP
 .B /tmp/trtmp*
 temporary file
 .TP
-.B /sys/lib/tmac/tmac.*
+.B \*9/tmac/tmac.*
 standard macro files
 .TP
-.B /sys/lib/troff/term/*
+.B \*9/troff/term/*
 terminal driving tables for
 .I nroff
 .TP
-.B /sys/lib/troff/font/*
+.B \*9/troff/font/*
 font width tables for
 .I troff
 .SH SOURCE
diff --git a/man/man1/units.1 b/man/man1/units.1
index fff68a2..054a37f 100644
--- a/man/man1/units.1
+++ b/man/man1/units.1
@@ -73,13 +73,13 @@
 etc.
 .PP
 The complete list of units can be found in
-.BR /lib/units .
+.BR \*9/lib/units .
 A
 .I file
 argument to
 .I units
 specifies a file to be used instead of
-.BR /lib/units.
+.BR \*9/lib/units.
 The
 .B -v
 flag causes
@@ -93,7 +93,7 @@
     / .97973
 .EE
 .SH FILES
-.B /lib/units
+.B \*9/lib/units
 .SH SOURCE
 .B \*9/src/cmd/units.y
 .SH BUGS
@@ -102,7 +102,6 @@
 does only multiplicative scale changes,
 it can convert Kelvin to Rankine but not Centigrade to
 Fahrenheit.
-.br
+.PP
 Currency conversions are only as accurate as the last time someone
-updated
-.BR /lib/units .
+updated the database.
diff --git a/man/man1/vac.1 b/man/man1/vac.1
index d8c512e..2997242 100644
--- a/man/man1/vac.1
+++ b/man/man1/vac.1
@@ -127,4 +127,3 @@
 .B \*9/src/cmd/vac
 .SH "SEE ALSO"
 Plan 9's \fIvacfs\fR(4) and \fIventi\fR(8)
-
diff --git a/man/man1/wc.1 b/man/man1/wc.1
index f0df4a4..45bc426 100644
--- a/man/man1/wc.1
+++ b/man/man1/wc.1
@@ -43,7 +43,7 @@
 looks for only
 .SM ASCII
 space, tab and newline.
-.br
+.PP
 .I Wc
 should have options to count suboptimal
 .SM UTF
diff --git a/man/man1/web.1 b/man/man1/web.1
index cf0b691..0910747 100644
--- a/man/man1/web.1
+++ b/man/man1/web.1
@@ -31,6 +31,8 @@
 .B $BROWSER
 environment variable, which should be the name of
 the executable for your choice of web browser.
+The default is
+.BR firefox .
 Since the various browsers all use different syntaxes
 in their
 .B -remote
@@ -41,6 +43,23 @@
 .I web
 opens each URL in a new tab rather than a new window.
 .PP
+When run under Mac OS X,
+.B $BROWSER
+should be set to the string
+.B safari
+or
+.BR firefox .
+.I Web
+uses AppleScript to talk to the browser.
+If 
+.B $BROWSER
+is not set,
+.I web
+looks for Firefox in
+.BR /Applications/Firefox.app
+and uses it if found;
+otherwise it uses Safari.
+.PP
 .I Wmail
 starts the composition of a new mail message to
 .IR address .
@@ -49,7 +68,8 @@
 .B $MAILER
 environment variable.
 The supported mailers are:
-.TP browser
+.TP
+.B browser
 invoke the mailer via a
 .B mailto://
 URL passed to
diff --git a/man/man1/wintext.1 b/man/man1/wintext.1
index 413b3d2..12859f2 100644
--- a/man/man1/wintext.1
+++ b/man/man1/wintext.1
@@ -1,15 +1,19 @@
 .TH WINTEXT 1
 .SH NAME
 wintext, ", "" \- access text in current window
+.ds x \C'"'
+.ds xx \C'"'\^\^\^\^\C'"'
+.ds y \*x\ 
+.ds yy \*(xx\ 
 .SH SYNOPSIS
 .B wintext
 .br
-.B \C'"'\ 
+.B \*x\ 
 [
 .I prefix
 ]
 .br
-.B \C'"'\C'"'\ 
+.B \*(xx\ 
 [
 .I prefix
 ]
@@ -23,7 +27,7 @@
 .IR 9term (1)
 window to standard output.
 .PP
-.I \C'"'
+.I \*y
 searches the window text for commands typed with a particular prefix
 and prints them, indented, to standard output.
 .I Prefix
@@ -31,18 +35,18 @@
 If
 .I prefix
 is omitted,
-.I \C'"'
+.I \*y
 prints the last command executed.
-.I \C'"'\C'"'
+.I \*(yy
 prints the last command that
-.I \C'"'
+.I \*y
 would print and then executes it by piping it into 
 .IR rc (1).
 .PP
 Both
-.I \C'"'
+.I \*y
 and
-.I \C'"'\C'"'
+.I \*(yy
 identify commands in the window text by looking for lines
 beginning with a shell prompt.
 Prompts are assumed to be an unindented sequence of
@@ -62,7 +66,7 @@
 .IP
 .EX
 .ta +4n
-% \C'"' 'l[sc]'
+% \*x 'l[sc]'
 	% ls -l /tmp/qq*
 	# ls -lrt /etc
 	% lc r*
@@ -75,7 +79,7 @@
 .IP
 .EX
 .ta +4n
-% \C'"'\C'"' lc
+% \*(xx lc
 	% lc r*
 ramfs   rc      read    rio     rm
 % 
@@ -86,13 +90,9 @@
 .SH SOURCE
 .B \*9/bin
 .SH BUGS
-.I \C'"'
+.I \*y
 and
-.I \C'"'\C'"'
+.I \*(yy
 are hard to type in shells other than
 .IR rc (1).
 .\" and in troff!
-.PP
-Don't run
-.I \C'"'\C'"'
-twice in a row.
diff --git a/man/man1/yacc.1 b/man/man1/yacc.1
index 362d506..75d4d47 100644
--- a/man/man1/yacc.1
+++ b/man/man1/yacc.1
@@ -145,7 +145,7 @@
 .B \*9/lib/yaccpars
 parser prototype using stdio
 .SH SOURCE
-.B \*9/src/cmd/9yacc.c
+.B \*9/src/cmd/yacc.c
 .SH "SEE ALSO"
 .IR lex (1)
 .br
diff --git a/man/man3/0intro.3 b/man/man3/0intro.3
new file mode 100644
index 0000000..e544cc8
--- /dev/null
+++ b/man/man3/0intro.3
@@ -0,0 +1,395 @@
+.TH INTRO 3
+.SH NAME
+intro \- introduction to library functions
+.SH SYNOPSIS
+.nf
+.B #include <u.h>
+.PP
+.B #include \fIany Unix headers\fR
+.PP
+.B #include <libc.h>
+.PP
+.B #include <auth.h>
+.PP
+.B #include <bio.h>
+.PP
+.B #include <draw.h>
+.PP
+.B #include <fcall.h>
+.PP
+.B #include <frame.h>
+.PP
+.B #include <mach.h>
+.PP
+.B #include <regexp.h>
+.PP
+.B #include <thread.h>
+.fi
+.SH DESCRIPTION
+This section describes functions
+in various libraries.
+For the most part, each library is defined by a single C include
+file, such as those listed above, and a single archive file containing
+the library proper.  The name of the archive is
+.BI \*9/lib/lib x .a \f1,
+where
+.I x
+is the base of the include file name, stripped of a leading
+.B lib
+if present.
+For example,
+.B <draw.h>
+defines the contents of library
+.BR \*9/lib/libdraw.a ,
+which may be abbreviated when named to the loader as
+.BR -ldraw .
+In practice, each include file contains a magic pragma
+that directs the loader to pick up the associated archive
+automatically, so it is rarely necessary to tell the loader
+which
+libraries a program needs;
+see
+.IR 9c (1).
+.PP
+The library to which a function belongs is defined by the
+header file that defines its interface.
+The `C library',
+.IR libc ,
+contains most of the basic subroutines such
+as
+.IR strlen .
+Declarations for all of these functions are
+in
+.BR <libc.h> ,
+which must be preceded by
+.RI ( needs )
+an include of
+.BR <u.h> .
+The graphics library,
+.IR draw ,
+is defined by
+.BR <draw.h> ,
+which needs
+.B <libc.h>
+and
+.BR <u.h> .
+The Buffered I/O library,
+.IR libbio ,
+is defined by
+.BR <bio.h> ,
+which needs
+.B <libc.h>
+and
+.BR <u.h> .
+The ANSI C Standard I/O library,
+.IR libstdio ,
+is defined by
+.BR <stdio.h> ,
+which needs
+.BR <u.h> .
+There are a few other, less commonly used libraries defined on
+individual pages of this section.
+.PP
+The include file
+.BR <u.h> ,
+a prerequisite of several other include files,
+declares the architecture-dependent and -independent types, including:
+.IR uchar ,
+.IR ushort ,
+and
+.IR ulong ,
+the unsigned integer types;
+.IR schar ,
+the signed char type;
+.I vlong
+and
+.IR uvlong ,
+the signed and unsigned very long integral types;
+.IR Rune ,
+the Unicode character type;
+.IR u8int ,
+.IR u16int ,
+.IR u32int ,
+and
+.IR u64int ,
+the unsigned integral types with specific widths;
+.IR jmp_buf ,
+the type of the argument to
+.I setjmp
+and 
+.IR longjmp ,
+plus macros that define the layout of
+.IR jmp_buf
+(see
+.IR setjmp (3));
+.\" definitions of the bits in the floating-point control register
+.\" as used by
+.\" .IR getfcr (2);
+and
+the macros
+.B va_arg
+and friends for accessing arguments of variadic functions (identical to the
+macros defined in
+.B <stdarg.h>
+in ANSI C).
+.PP
+Plan 9 and Unix use many similarly-named functions for different purposes:
+for example, Plan 9's
+.I dup
+is closer to (but not exactly) Unix's
+.IR dup2 .
+To avoid name conflicts,
+.B <libc.h>
+defines many of these names as preprocessor macros to add a
+.I p9
+prefix,
+so that
+.I dup
+becomes
+.IR p9dup .
+To disable this renaming,
+.B #define
+.B NOPLAN9DEFINES
+before including
+.BR <libc.h> .
+If Unix headers must be included in a program,
+they should be included after
+.BR <u.h> ,
+which sets important preprocessor directives
+(for example, to enable 64-bit file offsets),
+but before
+.BR <libc.h> ,
+to avoid renaming problems.
+.SS "Name space
+Files are collected into a hierarchical organization called a
+.I "file tree
+starting in a
+.I directory
+called the
+.IR root .
+File names, also called
+.IR paths ,
+consist of a number of
+.BR / -separated
+.I "path elements"
+with the slashes corresponding to directories.
+A path element must contain only printable
+characters (those outside the control spaces of
+.SM ASCII
+and Latin-1).
+A path element cannot contain a slash.
+.PP
+When a process presents a file name to Plan 9, it is
+.I evaluated
+by the following algorithm.
+Start with a directory that depends on the first
+character of the path:
+.L /
+means the root of the main hierarchy,
+and anything else means the process's current working directory.
+Then for each path element, look up the element
+in the directory, advance to that directory,
+do a possible translation (see below), and repeat.
+The last step may yield a directory or regular file.
+.SS "File I/O"
+Files are opened for input or output
+by
+.I open
+or
+.I create
+(see
+.IR open (3)).
+These calls return an integer called a
+.IR "file descriptor"
+which identifies the file
+to subsequent I/O calls,
+notably
+.IR read (3)
+and
+.IR write .
+The system allocates the numbers by selecting the lowest unused descriptor.
+They are allocated dynamically; there is no visible limit to the number of file
+descriptors a process may have open.
+They may be reassigned using
+.IR dup (3).
+File descriptors are indices into a
+kernel resident
+.IR "file descriptor table" .
+Each process has an associated file descriptor table.
+In threaded programs
+(see
+.IR thread (3)),
+the file descriptor table is shared by all the procs.
+.PP
+By convention,
+file descriptor 0 is the standard input,
+1 is the standard output,
+and 2 is the standard error output.
+With one exception, the operating system is unaware of these conventions;
+it is permissible to close file 0,
+or even to replace it by a file open only for writing,
+but many programs will be confused by such chicanery.
+The exception is that the system prints messages about broken processes
+to file descriptor 2.
+.PP
+Files are normally read or written in sequential order.
+The I/O position in the file is called the
+.IR "file offset"
+and may be set arbitrarily using the
+.IR seek (3)
+system call.
+.PP
+Directories may be opened like regular files.
+Instead of reading them with
+.IR read (3),
+use the
+.B Dir
+structure-based
+routines described in
+.IR dirread (3).
+The entry
+corresponding to an arbitrary file can be retrieved by
+.IR dirstat
+(see
+.IR stat (3))
+or
+.IR dirfstat ;
+.I dirwstat
+and
+.I dirfwstat
+write back entries, thus changing the properties of a file.
+.PP
+New files are made with
+.I create
+(see
+.IR open (3))
+and deleted with
+.IR remove (3).
+Directories may not directly be written;
+.IR create ,
+.IR remove ,
+.IR wstat ,
+and
+.I fwstat
+alter them.
+.PP
+.IR Pipe (3)
+creates a connected pair of file descriptors,
+useful for bidirectional local communication.
+.SS "Process execution and control"
+A new process is created
+when an existing one calls
+.IR fork (2).
+The new (child) process starts out with
+copies of the address space and most other attributes
+of the old (parent) process.
+In particular,
+the child starts out running
+the same program as the parent;
+.IR exec (3)
+will bring in a different one.
+.PP
+Each process has a unique integer process id;
+a set of open files, indexed by file descriptor;
+and a current working directory
+(changed by
+.IR chdir (2)).
+.PP
+Each process has a set of attributes \(em memory, open files,
+name space, etc. \(em that may be shared or unique.
+Flags to
+.IR rfork
+control the sharing of these attributes.
+.PP
+A process terminates by calling
+.IR exits (3).
+A parent process may call
+.IR wait (3)
+to wait for some child to terminate.
+A bit of status information
+may be passed from
+.I exits
+to
+.IR wait .
+On Plan 9, the status information is an arbitrary text string,
+but on Unix it is a single integer.
+The Plan 9 interface persists here, although the functionality does not.
+Instead, empty strings are converted to exit status 0 and non-empty strings to 1.
+.PP
+A process can go to sleep for a specified time by calling
+.IR sleep (3).
+.PP
+There is a
+.I notification
+mechanism for telling a process about events such as address faults,
+floating point faults, and messages from other processes.
+A process uses
+.IR notify (3)
+to register the function to be called (the
+.IR "notification handler" )
+when such events occur.
+.SS Multithreading
+Where possible according to the ANSI C standard,
+the main C library works properly in multiprocess programs;
+.IR malloc ,
+.IR print ,
+and the other routines use locks (see
+.IR lock (3))
+to synchronize access to their data structures.
+The graphics library defined in
+.B <draw.h>
+is also multi-process capable; details are in
+.IR graphics (3).
+In general, though, multiprocess programs should use some form of synchronization
+to protect shared data.
+.PP
+The thread library, defined in
+.BR <thread.h> ,
+provides support for multiprocess programs.
+It includes a data structure called a
+.B Channel
+that can be used to send messages between processes,
+and coroutine-like
+.IR threads ,
+which enable multiple threads of control within a single process.
+The threads within a process are scheduled by the library, but there is
+no pre-emptive scheduling within a process; thread switching occurs
+only at communication or synchronization points.
+.PP
+Most programs using the thread library
+comprise multiple processes
+communicating over channels, and within some processes,
+multiple threads.  Since I/O calls may block, a system
+call may block all the threads in a process.
+Therefore, a program that shouldn't block unexpectedly will use a process
+to serve the I/O request, passing the result to the main processes
+over a channel when the request completes.
+For examples of this design, see
+.IR ioproc (3)
+or
+.IR mouse (3).
+.SH SEE ALSO
+.IR nm (1), 
+.IR 9c (1)
+.SH DIAGNOSTICS
+Math functions in
+.I libc
+return
+special values when the function is undefined for the
+given arguments or when the value is not representable
+(see
+.IR nan (3)).
+.PP
+Some of the functions in
+.I libc
+are system calls and many others employ system calls in their implementation.
+All system calls return integers,
+with \-1 indicating that an error occurred;
+.IR errstr (3)
+recovers a string describing the error.
+Some user-level library functions also use the
+.I errstr
+mechanism to report errors.
+Functions that may affect the value of the error string are said to ``set
+.IR errstr '';
+it is understood that the error string is altered only if an error occurs.
diff --git a/man/man3/9p.3 b/man/man3/9p.3
index 1e153bf..109c452 100644
--- a/man/man3/9p.3
+++ b/man/man3/9p.3
@@ -109,13 +109,13 @@
 .B Fid
 structures are allocated one-to-one with uncompleted
 requests and active fids, and are described in
-.IR 9pfid (3).
+.IR 9p-fid (3).
 .PP
 The behavior of
 .I srv
 depends on whether there is a file tree
 (see
-.IR 9pfile (3))
+.IR 9p-file (3))
 associated with the server, that is,
 whether the
 .B tree
@@ -717,8 +717,8 @@
 option to increment
 .BR chatty9p .
 .SH EXAMPLES
-\*9/src/lib9p/ramfs.c
-is an example of simple single-threaded file servers.
+.B \*9/src/lib9p/ramfs.c
+is an example of a simple single-threaded file server.
 On Plan 9, see
 .IR archfs ,
 .IR cdfs ,
@@ -744,6 +744,6 @@
 .SH SOURCE
 .B \*9/src/lib9p
 .SH SEE ALSO
-.IR 9pfid (3),
-.IR 9pfile (3),
+.IR 9p-fid (3),
+.IR 9p-file (3),
 .IR intro (9p)
diff --git a/man/man3/9pclient.3 b/man/man3/9pclient.3
index b21676a..cb2725a 100644
--- a/man/man3/9pclient.3
+++ b/man/man3/9pclient.3
@@ -9,8 +9,8 @@
 .B #include <fcall.h>
 .PP
 .B #include <9pclient.h>
+.ta +\w'\fLCFsys* 'u
 .PP
-.ta +'\fLCFsys* 'u
 .B
 CFsys*	fsmount(int fd, char *aname)
 .PP
@@ -214,7 +214,7 @@
 as on Unix and Plan 9.
 Elements that are empty or
 dot
-.B ( . )
+.RB ( . )
 are ignored.
 .PP
 Once opened, these fids can be read and written using
diff --git a/man/man3/INDEX b/man/man3/INDEX
index 9c067d0..4739b17 100644
--- a/man/man3/INDEX
+++ b/man/man3/INDEX
@@ -1,3 +1,48 @@
+0intro 0intro.3
+intro 0intro.3
+9p-cmdbuf 9p-cmdbuf.3
+Cmdbuf 9p-cmdbuf.3
+lookupcmd 9p-cmdbuf.3
+parsecmd 9p-cmdbuf.3
+respondcmderror 9p-cmdbuf.3
+9p-fid 9p-fid.3
+Fid 9p-fid.3
+Fidpool 9p-fid.3
+Req 9p-fid.3
+Reqpool 9p-fid.3
+allocfid 9p-fid.3
+allocfidpool 9p-fid.3
+allocreq 9p-fid.3
+allocreqpool 9p-fid.3
+closefid 9p-fid.3
+closereq 9p-fid.3
+freefidpool 9p-fid.3
+freereqpool 9p-fid.3
+lookupfid 9p-fid.3
+lookupreq 9p-fid.3
+removefid 9p-fid.3
+removereq 9p-fid.3
+9p-file 9p-file.3
+File 9p-file.3
+Tree 9p-file.3
+alloctree 9p-file.3
+closedirfile 9p-file.3
+closefile 9p-file.3
+createfile 9p-file.3
+freetree 9p-file.3
+hasperm 9p-file.3
+opendirfile 9p-file.3
+readdirfile 9p-file.3
+removefile 9p-file.3
+walkfile 9p-file.3
+9p-intmap 9p-intmap.3
+Intmap 9p-intmap.3
+allocmap 9p-intmap.3
+caninsertkey 9p-intmap.3
+deletekey 9p-intmap.3
+freemap 9p-intmap.3
+insertkey 9p-intmap.3
+lookupkey 9p-intmap.3
 9p 9p.3
 Srv 9p.3
 dirread9p 9p.3
@@ -39,41 +84,6 @@
 fsversion 9pclient.3
 fswrite 9pclient.3
 nsmount 9pclient.3
-9pcmdbuf 9pcmdbuf.3
-Cmdbuf 9pcmdbuf.3
-lookupcmd 9pcmdbuf.3
-parsecmd 9pcmdbuf.3
-respondcmderror 9pcmdbuf.3
-9pfid 9pfid.3
-Fid 9pfid.3
-Fidpool 9pfid.3
-Req 9pfid.3
-Reqpool 9pfid.3
-allocfid 9pfid.3
-allocfidpool 9pfid.3
-allocreq 9pfid.3
-allocreqpool 9pfid.3
-closefid 9pfid.3
-closereq 9pfid.3
-freefidpool 9pfid.3
-freereqpool 9pfid.3
-lookupfid 9pfid.3
-lookupreq 9pfid.3
-removefid 9pfid.3
-removereq 9pfid.3
-9pfile 9pfile.3
-File 9pfile.3
-Tree 9pfile.3
-alloctree 9pfile.3
-closedirfile 9pfile.3
-closefile 9pfile.3
-createfile 9pfile.3
-freetree 9pfile.3
-hasperm 9pfile.3
-opendirfile 9pfile.3
-readdirfile 9pfile.3
-removefile 9pfile.3
-walkfile 9pfile.3
 Dx addpt.3
 Dy addpt.3
 Pt addpt.3
@@ -233,15 +243,11 @@
 announce dial.3
 dial dial.3
 dialparse dial.3
-hangup dial.3
 listen dial.3
 netmkaddr dial.3
 reject dial.3
 dirread dirread.3
 dirreadall dirread.3
-Disk disk.3
-disk disk.3
-opendisk disk.3
 ARROW draw.3
 Image draw.3
 _string draw.3
@@ -473,14 +479,6 @@
 targetname html.3
 toStr html.3
 validitems html.3
-Intmap intmap.3
-allocmap intmap.3
-caninsertkey intmap.3
-deletekey intmap.3
-freemap intmap.3
-insertkey intmap.3
-intmap intmap.3
-lookupkey intmap.3
 closeioproc ioproc.3
 iocall ioproc.3
 ioclose ioproc.3
@@ -927,9 +925,6 @@
 read read.3
 readn read.3
 write read.3
-RGB readcolmap.3
-readcolmap readcolmap.3
-writecolmap readcolmap.3
 regcomp regexp.3
 regcomplit regexp.3
 regcompnl regexp.3
@@ -939,15 +934,6 @@
 regsub regexp.3
 rregexec regexp.3
 rregsub regexp.3
-regcomp regexp9.3
-regcomplit regexp9.3
-regcompnl regexp9.3
-regerror regexp9.3
-regexec regexp9.3
-regexp9 regexp9.3
-regsub regexp9.3
-rregexec regexp9.3
-rregsub regexp9.3
 rfork rfork.3
 
 X509dump rsa.3
@@ -993,11 +979,6 @@
 runestrncpy runestrcat.3
 runestrrchr runestrcat.3
 runestrstr runestrcat.3
-openscsi scsi.3
-scsi scsi.3
-scsicmd scsi.3
-scsierror scsi.3
-scsiready scsi.3
 hmac_md5 sechash.3
 hmac_sha1 sechash.3
 md4 sechash.3
@@ -1125,7 +1106,6 @@
 threadintgrp thread.3
 threadkill thread.3
 threadkillgrp thread.3
-threadlinklibrary thread.3
 threadmain thread.3
 threadnotify thread.3
 threadpid thread.3
diff --git a/man/man3/atof.3 b/man/man3/atof.3
index f6da685..0da2237 100644
--- a/man/man3/atof.3
+++ b/man/man3/atof.3
@@ -144,3 +144,35 @@
 .I atol
 accept octal and hexadecimal numbers in the style of C,
 contrary to the ANSI specification.
+.PP
+.IR Atof ,
+.IR strtod ,
+.IR strtol ,
+.IR strtoul ,
+.IR strtoll ,
+and
+.IR strtoull
+are not provided:
+they are expected to be provided by the underlying system.
+.PP
+Because they are implemented in the fmt library,
+.I charstod
+and
+.I strtod
+are preprocessor macros defined as
+.I fmtcharstod
+and
+.IR fmtstrtod .
+.PP
+To avoid name conflicts with the underlying system,
+.IR atoi ,
+.IR atol ,
+and
+.I atoll
+are preprocessor macros defined as
+.IR p9atoi ,
+.IR p9atol ,
+and
+.IR p9atoll ;
+see
+.IR intro (3).
diff --git a/man/man3/bin.3 b/man/man3/bin.3
index 7606202..c888193 100644
--- a/man/man3/bin.3
+++ b/man/man3/bin.3
@@ -20,7 +20,7 @@
 void	*bingrow(Bin **bp, void *op, ulong osize,
 .br
 .B
-	ulong size, int clr);
+	    ulong size, int clr);
 .PP
 .B
 void	binfree(Bin **bp);
diff --git a/man/man3/bio.3 b/man/man3/bio.3
index 8260cc2..02f36ae 100644
--- a/man/man3/bio.3
+++ b/man/man3/bio.3
@@ -2,7 +2,7 @@
 .SH NAME
 Bopen, Bfdopen, Binit, Binits, Brdline, Brdstr, Bgetc, Bgetrune, Bgetd, Bungetc, Bungetrune, Bread, Bseek, Boffset, Bfildes, Blinelen, Bputc, Bputrune, Bprint, Bvprint, Bwrite, Bflush, Bterm, Bbuffered \- buffered input/output
 .SH SYNOPSIS
-.ta \w'Biobuf* 'u
+.ta \w'\fLBiobuf* 'u
 .B #include <u.h>
 .br
 .B #include <libc.h>
diff --git a/man/man3/complete.3 b/man/man3/complete.3
index 6ccf9da..52702ac 100644
--- a/man/man3/complete.3
+++ b/man/man3/complete.3
@@ -13,12 +13,12 @@
 .ta \w'    'u +\w'    'u +\w'    'u +\w'    'u +\w'    'u
 typedef struct Completion	Completion;
 struct Completion{
-	uchar advance;		/* whether forward progress has been made */
-	uchar complete;	/* whether the completion now represents a file or directory */
-	char *string;		/* the string to advance, suffixed " " or "/" for file or directory */
-	int nmatch;		/* number of files that matched */
-	int nfile;			/* number of files returned */
-	char **filename;	/* their names */
+	uchar advance;
+	uchar complete;
+	char *string;
+	int nmatch;
+	int nfile;
+	char **filename;
 };
 
 .fi
diff --git a/man/man3/ctime.3 b/man/man3/ctime.3
index 8b2f041..65ab1d4 100644
--- a/man/man3/ctime.3
+++ b/man/man3/ctime.3
@@ -90,9 +90,26 @@
 .SH BUGS
 The return values point to static data
 whose content is overwritten by each call.
-.br
+.PP
 Daylight Savings Time is ``normal'' in the Southern hemisphere.
-.br
+.PP
 These routines are not equipped to handle non-\c
 .SM ASCII
 text, and are provincial anyway.
+.PP
+To avoid name conflicts with the underlying system,
+.IR ctime ,
+.IR localtime ,
+.IR gmtime ,
+.IR asctime ,
+and
+.I tm2sec
+are preprocessor macros defined as
+.IR p9ctime ,
+.IR p9localtime ,
+.IR p9gmtime ,
+.IR p9asctime ,
+and
+.IR p9tm2sec ;
+see
+.IR intro (3).
diff --git a/man/man3/dial.3 b/man/man3/dial.3
index 36364f3..0c8c96a 100644
--- a/man/man3/dial.3
+++ b/man/man3/dial.3
@@ -1,6 +1,6 @@
 .TH DIAL 3
 .SH NAME
-dial, hangup, announce, listen, accept, reject, netmkaddr, dialparse \- make and break network connections
+dial, announce, listen, accept, reject, netmkaddr, dialparse \- make and break network connections
 .SH SYNOPSIS
 .B #include <u.h>
 .br
@@ -34,7 +34,10 @@
 .\" void freenetconninfo(NetConnINfo*)
 .PP
 .B
-int	dialparse(char *addr, char **net, char **unix, u32int *host, int *port)
+int   dialparse(char *addr, char **net, char **unix,
+.br
+.B
+          u32int *host, int *port)
 .SH DESCRIPTION
 For these routines,
 .I addr
@@ -310,3 +313,17 @@
 and
 .I listen
 return \-1 if they fail.
+.SH BUGS
+To avoid name conflicts with the underlying system,
+.IR dial ,
+.IR announce ,
+.IR listen ,
+.IR netmkaddr ,
+and
+.I reject
+are preprocessor macros defined as
+.IR p9dial ,
+.IR p9announce ,
+and so on;
+see
+.IR intro (3).
diff --git a/man/man3/dup.3 b/man/man3/dup.3
index a9378dc..392e6fe 100644
--- a/man/man3/dup.3
+++ b/man/man3/dup.3
@@ -31,8 +31,9 @@
 Sets
 .IR errstr .
 .SH BUGS
-.I Dup
-is a macro for
-.I p9dup
-to avoid name conflicts with the Unix function; see
+To avoid name conflicts with the underlying system,
+.I dup
+is a preprocessor macro defined as
+.IR p9dup ;
+see
 .IR intro (3).
diff --git a/man/man3/event.3 b/man/man3/event.3
index 5991a17..1a36538 100644
--- a/man/man3/event.3
+++ b/man/man3/event.3
@@ -382,3 +382,8 @@
 .IR plumb (3),
 .\" .IR cons (3),
 .IR draw (3)
+.SH BUGS
+.I Etimer
+and
+.I estart
+are unimplemented.
diff --git a/man/man3/exec.3 b/man/man3/exec.3
index 2c5b166..1a0a8a8 100644
--- a/man/man3/exec.3
+++ b/man/man3/exec.3
@@ -128,3 +128,14 @@
 This is a clumsy way to deal with Unix's lack of
 a union directory for
 .BR /bin .
+.PP
+To avoid name conflicts with the underlying system,
+.I exec
+and
+.I execl
+are preprocessor macros defined as
+.I p9exec
+and
+.IR p9execl ;
+see
+.IR intro (3).
diff --git a/man/man3/exits.3 b/man/man3/exits.3
index 62ea8d3..62c9e56 100644
--- a/man/man3/exits.3
+++ b/man/man3/exits.3
@@ -93,3 +93,14 @@
 Exit codes 97 through 99 are used by the thread library to signal
 internal synchronization errors between the main program
 and a proxy process that implements backgrounding.
+.PP
+To avoid name conflicts with the underlying system,
+.I atexit
+and
+.I atexitdont
+are preprocessor macros defined as
+.I p9atexit
+and
+.IR p9atexitdont ;
+see
+.IR intro (3).
diff --git a/man/man3/flate.3 b/man/man3/flate.3
index e7594b3..b7b1a19 100644
--- a/man/man3/flate.3
+++ b/man/man3/flate.3
@@ -8,7 +8,7 @@
 .br
 .B #include <flate.h>
 .PP
-.ta \w'ulongmm'u
+.ta \w'\fLulongmm'u +\w'\fL  'u
 .PP
 .B
 int	deflateinit(void)
@@ -17,37 +17,37 @@
 int	deflate(void *wr, int (*w)(void*,void*,int),
 .br
 .B
-	void *rr, int (*r)(void*,void*,int),
+		void *rr, int (*r)(void*,void*,int),
 .br
 .B
-	int level, int debug)
+		int level, int debug)
 .PP
 .B
 int	deflatezlib(void *wr, int (*w)(void*,void*,int),
 .br
 .B
-	void *rr, int (*r)(void*,void*,int),
+		void *rr, int (*r)(void*,void*,int),
 .br
 .B
-	int level, int debug)
+		int level, int debug)
 .PP
 .B
 int	deflateblock(uchar *dst, int dsize,
 .br
 .B
-	uchar *src, int ssize,
+		uchar *src, int ssize,
 .br
 .B
-	int level, int debug)
+		int level, int debug)
 .PP
 .B
 int	deflatezlibblock(uchar *dst, int dsize,
 .br
 .B
-	uchar *src, int ssize,
+		uchar *src, int ssize,
 .br
 .B
-	int level, int debug)
+		int level, int debug)
 .PP
 .B
 int	inflateinit(void)
@@ -56,25 +56,25 @@
 int	inflate(void *wr, int (*w)(void*, void*, int),
 .br
 .B
-	void *getr, int (*get)(void*))
+		void *getr, int (*get)(void*))
 .PP
 .B
 int	inflatezlib(void *wr, int (*w)(void*, void*, int),
 .br
 .B
-	void *getr, int (*get)(void*))
+		void *getr, int (*get)(void*))
 .PP
 .B
 int	inflateblock(uchar *dst, int dsize,
 .br
 .B
-	uchar *src, int ssize)
+		uchar *src, int ssize)
 .PP
 .B
 int	inflatezlibblock(uchar *dst, int dsize,
 .br
 .B
-	uchar *src, int ssize)
+		uchar *src, int ssize)
 .PP
 .B
 char	*flateerr(int error)
diff --git a/man/man3/fmtinstall.3 b/man/man3/fmtinstall.3
index d279bc8..da766d7 100644
--- a/man/man3/fmtinstall.3
+++ b/man/man3/fmtinstall.3
@@ -370,4 +370,3 @@
 .SH DIAGNOSTICS
 These routines return negative numbers or nil for errors and set
 .IR errstr .
-.SH BUGS
diff --git a/man/man3/frame.3 b/man/man3/frame.3
index 7dc9bc1..1e06380 100644
--- a/man/man3/frame.3
+++ b/man/man3/frame.3
@@ -75,7 +75,7 @@
 of editable text in a single font on raster displays, such as in
 .IR sam (1)
 and
-.IR rio (1).
+.IR 9term (1).
 Frames may hold any character except NUL (0).
 Long lines are folded and tabs are at fixed intervals.
 .PP
diff --git a/man/man3/genrandom.3 b/man/man3/genrandom.3
index bb6118c..ddf481e 100644
--- a/man/man3/genrandom.3
+++ b/man/man3/genrandom.3
@@ -22,8 +22,10 @@
 .I Genrandom
 fills a buffer with bytes from the X9.17 pseudo-random
 number generator.  The X9.17 generator is seeded by 24
-truly random bytes read from
-.BR /dev/random .
+truly random bytes read via
+.I truerand
+(see
+.IR rand (3)).
 .PP
 .I Prng
 uses the native
diff --git a/man/man3/getenv.3 b/man/man3/getenv.3
index a6d5795..a817b6e 100644
--- a/man/man3/getenv.3
+++ b/man/man3/getenv.3
@@ -35,8 +35,13 @@
 Sets
 .IR errstr .
 .SH BUGS
-Defined as macros for
+To avoid name conflicts with the underlying system,
+.I getenv
+and
+.I putenv
+are preprocessor macros defined as
 .I p9getenv
 and
-.I p9putenv
-to avoid name conflicts with Unix library calls.
+.IR p9putenv ;
+see
+.IR intro (3).
diff --git a/man/man3/getwd.3 b/man/man3/getwd.3
index b68eea4..245914f 100644
--- a/man/man3/getwd.3
+++ b/man/man3/getwd.3
@@ -23,8 +23,15 @@
 .SH SOURCE
 .B \*9/src/lib9/getwd.c
 .SH "SEE ALSO"
-.IR pwd (1),
+.IR pwd (1)
 .SH DIAGNOSTICS
 On error, zero is returned.
 .IR Errstr (3)
 may be consulted for more information.
+.SH BUGS
+To avoid name conflicts with the underlying system,
+.I getwd
+is a preprocessor macro defined as
+.IR p9getwd ;
+see
+.IR intro (3).
diff --git a/man/man3/graphics.3 b/man/man3/graphics.3
index 7e3a70b..4b39332 100644
--- a/man/man3/graphics.3
+++ b/man/man3/graphics.3
@@ -615,7 +615,7 @@
 \&...
 .EE
 .SH FILES
-.BR /lib/font/bit "    directory of fonts
+.BR \*9/font/bit "    directory of fonts
 .SH SOURCE
 .B \*9/src/libdraw
 .SH "SEE ALSO"
@@ -649,3 +649,7 @@
 .B white
 and
 .BR black .
+.PP
+These manual pages contain many references to
+the now-fictitious
+.BR /dev/draw .
diff --git a/man/man3/malloc.3 b/man/man3/malloc.3
index 8b79247..1cdff57 100644
--- a/man/man3/malloc.3
+++ b/man/man3/malloc.3
@@ -168,3 +168,18 @@
 and
 .I free
 detect such corruption, they abort.
+.PP
+To avoid name conflicts with the system versions of these functions,
+.IR malloc ,
+.IR realloc ,
+.IR calloc ,
+and
+.I free
+are preprocessor macros defined as
+.IR p9malloc ,
+.IR p9realloc ,
+.IR p9calloc ,
+and
+.IR p9free ;
+see
+.IR intro (3).
diff --git a/man/man3/memdraw.3 b/man/man3/memdraw.3
index 969fee0..ec299a2 100644
--- a/man/man3/memdraw.3
+++ b/man/man3/memdraw.3
@@ -449,7 +449,6 @@
 is unusual in using a subfont rather than a font,
 and in having no parameter to align the source.
 .PP
-.I Libmemdraw
-is archived into
+These functions are 
+archived into
 .IR libdraw .
-
diff --git a/man/man3/memlayer.3 b/man/man3/memlayer.3
index 57ab8af..da1d025 100644
--- a/man/man3/memlayer.3
+++ b/man/man3/memlayer.3
@@ -304,6 +304,6 @@
 .IR window (3),
 .IR draw (3)
 .SH BUGS
-.I Libmemlayer
-is archived into
+These functions
+are archived into
 .IR libdraw .
diff --git a/man/man3/mp.3 b/man/man3/mp.3
index c4ecb37..f0028c3 100644
--- a/man/man3/mp.3
+++ b/man/man3/mp.3
@@ -1,6 +1,6 @@
 .TH MP 3
 .SH NAME
-mpsetminbits, mpnew, mpfree, mpbits, mpnorm, mpcopy, mpassign, mprand, strtomp, mpfmt,mptoa, betomp, mptobe, letomp, mptole, mptoui, uitomp, mptoi, itomp, uvtomp, mptouv, vtomp, mptov, mpdigdiv, mpadd, mpsub, mpleft, mpright, mpmul, mpexp, mpmod, mpdiv, mpcmp, mpextendedgcd, mpinvert, mpsignif, mplowbits0, mpvecdigmuladd, mpvecdigmulsub, mpvecadd, mpvecsub, mpveccmp, mpvecmul, mpmagcmp, mpmagadd, mpmagsub, crtpre, crtin, crtout, crtprefree, crtresfree, mpfactorial \- extended precision arithmetic
+mpsetminbits, mpnew, mpfree, mpbits, mpnorm, mpcopy, mpassign, mprand, strtomp, mpfmt,mptoa, betomp, mptobe, letomp, mptole, mptoui, uitomp, mptoi, itomp, uvtomp, mptouv, vtomp, mptov, mpdigdiv, mpadd, mpsub, mpleft, mpright, mpmul, mpexp, mpmod, mpdiv, mpfactorial, mpcmp, mpextendedgcd, mpinvert, mpsignif, mplowbits0, mpvecdigmuladd, mpvecdigmulsub, mpvecadd, mpvecsub, mpveccmp, mpvecmul, mpmagcmp, mpmagadd, mpmagsub, crtpre, crtin, crtout, crtprefree, crtresfree \- extended precision arithmetic
 .SH SYNOPSIS
 .B #include <u.h>
 .br
@@ -108,6 +108,9 @@
 void	mpdiv(mpint *dividend, mpint *divisor,  mpint *quotient, mpint *remainder)
 .PP
 .B
+mpint*	mpfactorial(ulong n)
+.PP
+.B
 int	mpcmp(mpint *b1, mpint *b2)
 .PP
 .B
@@ -162,9 +165,6 @@
 void	crtresfree(CRTres *res)
 .PP
 .B
-mpint*	mpfactorial(ulong n)
-.PP
-.B
 mpint	*mpzero, *mpone, *mptwo
 .SH DESCRIPTION
 .PP
@@ -441,6 +441,10 @@
 .BR "quotient = dividend/divisor" .
 .BR "remainder = dividend % divisor" .
 .TP
+.I mpfactorial
+returns factorial of
+.IR n .
+.TP
 .I mpcmp
 returns -1, 0, or +1 as
 .I b1
@@ -575,9 +579,5 @@
 and
 .I CRTres
 structures respectively.
-.PP
-.I Mpfactorial
-returns the factorial of
-.IR n .
 .SH SOURCE
 .B \*9/src/libmp
diff --git a/man/man3/muldiv.3 b/man/man3/muldiv.3
index 3bc6dda..36eb7b9 100644
--- a/man/man3/muldiv.3
+++ b/man/man3/muldiv.3
@@ -7,7 +7,7 @@
 .B #include <libc.h>
 .PP
 .B
-long muldiv(long a, long b, long c)
+long  muldiv(long a, long b, long c)
 .PP
 .B
 ulong umuldiv(ulong a, ulong b, ulong c)
diff --git a/man/man3/mux.3 b/man/man3/mux.3
index e36763d..6c12542 100644
--- a/man/man3/mux.3
+++ b/man/man3/mux.3
@@ -7,6 +7,7 @@
 .nf
 .B
 .ta +4n
+.ft B
 struct Mux
 {
 	uint mintag;
diff --git a/man/man3/notify.3 b/man/man3/notify.3
index 616c655..63c182b 100644
--- a/man/man3/notify.3
+++ b/man/man3/notify.3
@@ -207,7 +207,7 @@
 .PP
 .RS 3n
 .nf
-.ta \w'\fLsys: write on closed pipe  \fP'u \w'system call address argument out of range   'u
+.ta \w'\fLsys: segmentation violation  \fP'u +\w'process requested to exit     'u
 \fINote\fP	\fIMeaning\fP	\fIUnix signal\fP
 \fLinterrupt\fP	user interrupt (DEL key)	SIGINTR
 \fLhangup\fP	I/O connection closed	SIGHUP
@@ -217,6 +217,8 @@
 \fLsys: kill\fP	process forced to exit	SIGKILL
 \fLsys: bus error\fP	bus error	SIGBUS
 \fLsys: segmentation violation\fP	segmentation violation	SIGSEGV
+\fLsys: write on closed pipe\fP	write on closed pipe	SIGPIPE
+\fLsys: child\fP	child wait status change	SIGCHLD
 .fi
 .RE
 .PP
diff --git a/man/man3/print.3 b/man/man3/print.3
index b1c8545..af3f752 100644
--- a/man/man3/print.3
+++ b/man/man3/print.3
@@ -1,18 +1,10 @@
 .TH PRINT 3
-.de EX
-.nf
-.ft B
-..
-.de EE
-.fi
-.ft R
-..
 .SH NAME
 print, fprint, sprint, snprint, seprint, smprint, runesprint, runesnprint, runeseprint, runesmprint, vfprint, vsnprint, vseprint, vsmprint, runevsnprint, runevseprint, runevsmprint \- print formatted output
 .SH SYNOPSIS
-.B #include <utf.h>
+.B #include <u.h>
 .PP
-.B #include <fmt.h>
+.B #include <libc.h>
 .PP
 .ta \w'\fLchar* 'u
 .B
@@ -72,7 +64,10 @@
 writes text to the standard output.
 .I Fprint
 writes to the named output
-file descriptor.
+file descriptor:
+a buffered form
+is described in
+.IR bio (3).
 .I Sprint
 places text
 followed by the NUL character
@@ -96,7 +91,7 @@
 bytes in
 .IR s .
 Its result is always NUL-terminated and holds the maximal
-number of characters that can fit.
+number of complete UTF-8 characters that can fit.
 .I Seprint
 is like
 .IR snprint ,
@@ -191,27 +186,26 @@
 .PP
 The numeric verbs
 .BR d ,
-.BR i ,
-.BR u ,
 .BR o ,
 .BR b ,
 .BR x ,
 and
 .B X
-format their arguments in decimal, decimal,
-unsigned decimal, octal, binary, hexadecimal, and upper case hexadecimal.
+format their arguments in decimal,
+octal, binary, hexadecimal, and upper case hexadecimal.
 Each interprets the flags
 .BR 0 ,
 .BR h ,
 .BR hh ,
 .BR l ,
+.BR u ,
 .BR + ,
 .BR - ,
 .BR , ,
 and
 .B #
 to mean pad with zeros,
-short, byte, long, always print a sign, left justified, commas every three digits,
+short, byte, long, unsigned, always print a sign, left justified, commas every three digits,
 and alternate format.
 Also, a space character in the flag
 position is like
@@ -221,12 +215,9 @@
 short nor long is specified,
 then the argument is an
 .BR int .
-If an unsigned verb is specified,
+If unsigned is specified,
 then the argument is interpreted as a
-positive number and no sign is output;
-space and
-.B +
-flags are ignored for unsigned verbs.
+positive number and no sign is output.
 If two
 .B l
 flags are given,
@@ -249,8 +240,8 @@
 .B o
 conversion, the number is preceded by a
 .B 0
-if it doesn't already begin with one.
-For non-zero numbers and
+if it doesn't already begin with one;
+for
 .B x
 conversion, the number is preceded by
 .BR 0x ;
@@ -345,7 +336,7 @@
 .PP
 The
 .B s
-verb copies a string
+verb copies a NUL-terminated string
 (pointer to
 .BR char )
 to the output.
@@ -397,9 +388,7 @@
 The
 .B r
 verb takes no arguments; it copies the error string returned by a call to
-.IR strerror (3)
-with an argument of
-.IR errno.
+.IR errstr (3).
 .PP
 Custom verbs may be installed using
 .IR fmtinstall (3).
@@ -414,12 +403,12 @@
 	char buf[1024], *out;
 	va_list arg;
 
-	out = vseprint(buf, buf+sizeof buf, "Fatal error: ");
+	out = seprint(buf, buf+sizeof buf, "Fatal error: ");
 	va_start(arg, msg);
 	out = vseprint(out, buf+sizeof buf, msg, arg);
 	va_end(arg);
 	write(2, buf, out-buf);
-	exit(1);
+	exits("fatal error");
 }
 .EE
 .SH SEE ALSO
@@ -438,9 +427,9 @@
 .B b
 and
 .B r
-are not in ANSI and some
-.B C9X
-verbs are missing.
+are not in ANSI and
+.B u
+is a flag here instead of a verb.
 Also, and distinctly not a bug,
 .I print
 and friends generate
@@ -449,8 +438,8 @@
 .SM ASCII.
 .PP
 There is no
-.BR runeprint ,
-.BR runefprint ,
+.IR runeprint ,
+.IR runefprint ,
 etc. because runes are byte-order dependent and should not be written directly to a file; use the
 UTF output of
 .I print
diff --git a/man/man3/pushtls.3 b/man/man3/pushtls.3
index 5af31d7..fa0a080 100644
--- a/man/man3/pushtls.3
+++ b/man/man3/pushtls.3
@@ -26,7 +26,7 @@
 uchar		*readcert(char *filename, int *pcertlen)
 .PP
 .B
-PEMchain	*readcertchain(char *filename)
+PEMchain		*readcertchain(char *filename)
 .PP
 .B
 Thumbprint*	initThumbprints(char *ok, char *crl)
diff --git a/man/man3/quote.3 b/man/man3/quote.3
index 7e547c0..ae6c6c2 100644
--- a/man/man3/quote.3
+++ b/man/man3/quote.3
@@ -165,3 +165,10 @@
 .IR malloc (3),
 .IR print (3),
 .IR strcat (3)
+.SH BUGS
+Because it is provided by the format library,
+.I doquote
+is a preprocessor macro defined as
+.IR fmtdoquote ;
+see
+.IR intro (3).
diff --git a/man/man3/rand.3 b/man/man3/rand.3
index d6032d8..7dcc606 100644
--- a/man/man3/rand.3
+++ b/man/man3/rand.3
@@ -156,9 +156,9 @@
 .IR x ,
 .RI 0≤ x < val ≤ 2\u\s732\s10\d-1.
 .SH SOURCE
-.B \*9/src/lib9/
+.B \*9/src/lib9
 .br
-.B \*9/src/libsec/port/
+.B \*9/src/libsec/port
 .SH "SEE ALSO
 .\" .IR cons (3),
 .IR mp (3)
@@ -167,3 +167,18 @@
 and
 .I ntruerand
 maintain a static file descriptor.
+.PP
+To avoid name conflicts with the underlying system,
+.IR rand ,
+.IR lrand ,
+.IR frand ,
+.IR nrand ,
+.IR lnrand ,
+and
+.I srand
+are preprocessor macros defined as
+.IR p9rand ,
+.IR p9lrand ,
+and so on;
+see
+.IR intro (3).
diff --git a/man/man3/regexp.3 b/man/man3/regexp.3
index 06733aa..069e1d2 100644
--- a/man/man3/regexp.3
+++ b/man/man3/regexp.3
@@ -113,22 +113,22 @@
 	union {
 	   char *sp;
 	   Rune *rsp;
-	};
+	} s;
 	union {
 	   char *ep;
 	   Rune *rep;
-	};
+	} e;
 } Resub;
 .EE
 .LP
 If
-.B match[0].sp
+.B match[0].s.sp
 is nonzero on entry,
 .I regexec
 starts matching at that point within
 .IR string .
 If
-.B match[0].ep
+.B match[0].e.ep
 is nonzero on entry,
 the last character matched is the one
 preceding that point.
diff --git a/man/man3/sechash.3 b/man/man3/sechash.3
index a6f2c0e..d8b1cd4 100644
--- a/man/man3/sechash.3
+++ b/man/man3/sechash.3
@@ -13,50 +13,51 @@
 .B
 DigestState*	md4(uchar *data, ulong dlen, uchar *digest,
 .B
-			 DigestState *state)
+			    DigestState *state)
 .PP
 .B
 DigestState*	md5(uchar *data, ulong dlen, uchar *digest,
 .B
-			 DigestState *state)
+			    DigestState *state)
 .PP
 .B
 char*		md5pickle(MD5state *state)
 .PP
 .B
-MD5state*	md5unpickle(char *p);
+MD5state*		md5unpickle(char *p);
 .PP
 .B
 DigestState*	sha1(uchar *data, ulong dlen, uchar *digest,
 .B
-			 DigestState *state)
+			    DigestState *state)
 .PP
 .B
 char*		sha1pickle(MD5state *state)
 .PP
 .B
-MD5state*	sha1unpickle(char *p);
+MD5state*		sha1unpickle(char *p);
 .PP
 .B
 DigestState*	hmac_md5(uchar *data, ulong dlen,
 .br
 .B
-			 uchar *key, ulong klen,
+			    uchar *key, ulong klen,
 .br
 .B
-			 uchar *digest, DigestState *state)
+			    uchar *digest, DigestState *state)
 .PP
 .B
 DigestState*	hmac_sha1(uchar *data, ulong dlen,
 .br
 .B
-			 uchar *key, ulong klen,
+			    uchar *key, ulong klen,
 .br
 .B
-			 uchar *digest, DigestState *state)
+			    uchar *digest, DigestState *state)
 .SH DESCRIPTION
 .PP
-We support several secure hash functions.  The output of the
+These functions implement
+the cryptographic hash functions MD4, MD5, and SHA1.  The output of the
 hash is called a
 .IR digest .
 A hash is secure if, given the hashed data and the digest,
diff --git a/man/man3/seek.3 b/man/man3/seek.3
index e6435f4..36c594c 100644
--- a/man/man3/seek.3
+++ b/man/man3/seek.3
@@ -44,3 +44,10 @@
 .SH DIAGNOSTICS
 Sets
 .IR errstr .
+.SH BUGS
+To avoid name conflicts with the underlying system,
+.I seek
+is a preprocessor macro defined as
+.IR p9seek ;
+see
+.IR intro (3).
diff --git a/man/man3/setjmp.3 b/man/man3/setjmp.3
index e2af559..1210c17 100644
--- a/man/man3/setjmp.3
+++ b/man/man3/setjmp.3
@@ -55,36 +55,6 @@
 and
 .I longjmp
 can also be used to switch stacks.
-Defined in
-.B </$objtype/u.h>
-are several macros that can be used to build
-.B jmp_bufs
-by hand.  The following code establishes a
-.B jmp_buf
-.i label
-that may be called by
-.I longjmp
-to begin execution in a function
-.BR f
-with 1024 bytes of stack:
-.IP
-.EX
-#include <u.h>
-#include <libc.h>
-
-jmp_buf label;
-#define NSTACK 1024
-char stack[NSTACK];
-
-void
-setlabel(void)
-{
-	label[JMPBUFPC] = ((ulong)f+JMPBUFDPC);
-	/* -2 leaves room for old pc and new pc in frame */
-	label[JMPBUFSP =
-	        (ulong)(&stack[NSTACK-2*sizeof(ulong*)]);
-}
-.EE
 .SH SOURCE
 .B \*9/src/lib9/jmp.c
 .SH SEE ALSO
@@ -94,3 +64,24 @@
 .I Notejmp
 cannot recover from an address trap or bus error (page fault) on the 680x0
 architectures.
+.PP
+To avoid name conflicts with the underlying system,
+.IR setjmp ,
+.IR longjmp ,
+.IR notejmp ,
+and
+.I jmp_buf
+are preprocessor macros defined as
+.IR p9setjmp ,
+.IR p9longjmp ,
+.IR p9notejmp ,
+and
+.IR p9jmp_buf ;
+see
+.IR intro (3).
+.PP
+.I P9setjmp
+is implemented as a preprocessor macro that calls
+.I sigsetjmp
+(see
+Unix's \fIsetjmp\fR(3)).
diff --git a/man/man3/sleep.3 b/man/man3/sleep.3
index 7df6c33..0afa71d 100644
--- a/man/man3/sleep.3
+++ b/man/man3/sleep.3
@@ -43,3 +43,14 @@
 .SH DIAGNOSTICS
 These functions set
 .IR errstr .
+.SH BUGS
+To avoid name conflicts with the underlying system,
+.I sleep
+and
+.I alarm
+are preprocessor macros defined as
+.I p9sleep
+and
+.IR p9alarm ;
+see
+.IR intro (3).
diff --git a/man/man3/string.3 b/man/man3/string.3
index e17906b..9b88e8d 100644
--- a/man/man3/string.3
+++ b/man/man3/string.3
@@ -117,7 +117,7 @@
 Using
 .B s->base
 directly is frowned upon since it exposes too much of the implementation.
-.SS "allocation and freeing
+.SS "Allocation and freeing
 .PP
 A string must be allocated before it can be used.
 One normally does this using
diff --git a/man/man3/subfont.3 b/man/man3/subfont.3
index b3ca89c..5e1b09a 100644
--- a/man/man3/subfont.3
+++ b/man/man3/subfont.3
@@ -104,7 +104,7 @@
 A number of subfonts are kept in external files.
 The convention for naming subfont files is:
 .IP
-.B /lib/font/bit/\fIname\fP/\fIclass\fP.\fIsize\fP.\fIdepth
+.B \*9/font/\fIname\fP/\fIclass\fP.\fIsize\fP.\fIdepth
 .PD
 .PP
 where
@@ -217,9 +217,9 @@
 to
 .IB min + s ->n-1\f1.
 .SH FILES
-.TF /lib/font/bit
+.TF \*9/font
 .TP
-.B /lib/font/bit
+.B \*9/font
 bitmap font file tree
 .SH SOURCE
 .B \*9/src/libdraw
diff --git a/man/man3/thread.3 b/man/man3/thread.3
index 50bcb4e..39fa53a 100644
--- a/man/man3/thread.3
+++ b/man/man3/thread.3
@@ -33,7 +33,6 @@
 threadintgrp,
 threadkill,
 threadkillgrp,
-threadlinklibrary,
 threadmain,
 threadnotify,
 threadid,
@@ -46,14 +45,6 @@
 yield \- thread and proc management
 .SH SYNOPSIS
 .PP
-.de EX
-.nf
-.ft B
-..
-.de EE
-.fi
-.ft R
-..
 .EX
 .ta 4n +4n +4n +4n +4n +4n +4n
 #include <u.h>
@@ -88,8 +79,6 @@
 void	threadmain(int argc, char *argv[])
 int	mainstacksize
 int	proccreate(void (*fn)(void*), void *arg, uint stacksize)
-int	procrfork(void (*fn)(void*), void *arg, uint stacksize,
-		int rforkflag)
 int	threadcreate(void (*fn)(void*), void *arg, uint stacksize)
 void	threadexits(char *status)
 void	threadexitsall(char *status)
@@ -393,6 +382,7 @@
 fd[1] = 1;
 fd[2] = 2;
 .EE
+.LP
 to use the current standard files.  The correct code is
 .IP
 .EX
@@ -656,20 +646,6 @@
 .IR intro (3),
 .IR ioproc (3)
 .SH BUGS
-A program that intends to use the thread library
-but does not call any of its functions will not cause Unix linkers
-to link the thread library, resulting in the unintelligible error:
-.IP
-.EX
-\*9/lib/lib9.a(main.o)(.text+0x17): In function `main':
-\*9/src/lib9/main.c:10: undefined reference to `p9main'
-.EE
-.LP
-or similar.  To force the thread library to be linked properly in such cases,
-insert a call to the no-op function
-.I threadlinklibrary
-somewhere in your program.
-.PP
 To avoid name conflicts,
 .IR alt ,
 .IR nbrecv ,
@@ -689,10 +665,11 @@
 .IR chanalt ,
 .IR channbrecv ,
 and so on.
-Similarly,
-.I yield
+.I Yield
 is defined as a macro that expands to
 .IR threadyield .
+See
+.IR intro (3).
 .PP
 The implementation of
 .I threadnotify
diff --git a/man/man3/time.3 b/man/man3/time.3
index 9bf2db3..dfcafaf 100644
--- a/man/man3/time.3
+++ b/man/man3/time.3
@@ -31,3 +31,14 @@
 .SH DIAGNOSTICS
 These functions set
 .IR errstr .
+.SH BUGS
+To avoid name conflicts with the underlying system,
+.I time
+and
+.I nsec
+are preprocessor macros defined as
+.I p9time
+and
+.IR p9nsec ;
+see
+.IR intro (3).
diff --git a/man/man3/wait.3 b/man/man3/wait.3
index 445f29c..28d5d73 100644
--- a/man/man3/wait.3
+++ b/man/man3/wait.3
@@ -144,3 +144,16 @@
 .SH DIAGNOSTICS
 These routines set
 .IR errstr .
+.SH BUGS
+To avoid name conflicts with the underlying system,
+.IR wait ,
+.IR waitpid ,
+and
+.I waitfor
+are preprocessor macros defined as
+.IR p9wait ,
+.IR p9waitpid ,
+and
+.IR p9waitfor ;
+see 
+.IR intro (3).
diff --git a/man/man4/INDEX b/man/man4/INDEX
index bd0f7bc..407b7b0 100644
--- a/man/man4/INDEX
+++ b/man/man4/INDEX
@@ -2,5 +2,6 @@
 intro 0intro.4
 9pserve 9pserve.4
 acme acme.4
+import import.4
 plumber plumber.4
 ramfs ramfs.4
diff --git a/man/man4/acme.4 b/man/man4/acme.4
index 7d5f248..40143a4 100644
--- a/man/man4/acme.4
+++ b/man/man4/acme.4
@@ -25,14 +25,10 @@
 itself.
 When a command is run under
 .IR acme ,
-a directory holding these files is mounted on
-.B /mnt/acme
-(also bound to
-.BR /mnt/wsys )
-and also
-.BR /dev ;
-the files mentioned here
-appear in both those directories.
+a directory holding these files is posted as the 9P service
+.B acme
+(using
+.IR 9pserve (4)).
 .PP
 Some of these files supply virtual versions of services available from the underlying
 environment, in particular the character terminal files in Plan 9's
diff --git a/man/man4/import.4 b/man/man4/import.4
new file mode 100644
index 0000000..04d8fbe
--- /dev/null
+++ b/man/man4/import.4
@@ -0,0 +1,106 @@
+.TH IMPORT 4
+.SH NAME
+import \- import 9P resources from another system
+.SH SYNOPSIS
+.B import
+[
+.B -df
+]
+[
+.B -n
+.I ns
+]
+[
+.B -p
+.I prog
+]
+[
+.B -s
+.I service
+]
+.I system
+.SH DESCRIPTION
+.I Import
+presents the 9P service
+.I service
+(default
+.BR plumb )
+running on
+.I system
+as a service on the local system,
+in the current name space.
+.PP
+The
+.B -n
+option sets the remote name space directory
+where
+.I import
+should expect to find
+.IR service .
+If it is not specified,
+.I import
+uses name of the local system's name space directory.
+(Since name space directories are conventionally inside
+.BR /tmp ,
+the path have different meanings on the two systems.)
+.PP
+.I Import
+connects to
+.I system
+using
+.IR ssh (1).
+It invokes
+.I import
+on the remote system to carry out the remote
+side of the protocol.
+The
+.B -p
+option specifies the path to
+.I import
+on the remote system, in case it is not in the system search path.
+.PP
+The
+.B -d
+option turns on debugging.
+The
+.B -f
+option keeps
+.I import
+from forking itself into the background, also useful for debugging.
+.SH EXAMPLE
+Suppose you run
+.B sam
+.B -r
+to the CPU server
+.IR anna .
+.I Sam
+wants to talk to a plumber on the local terminal,
+but the file names will refer to files on
+.IR anna .
+.PP
+To fix this problem, create a new name space directory
+and start a new plumber on
+.IR anna :
+.IP
+.EX
+remotens=/tmp/ns.`whoami`.on.`hostname`
+ssh anna mkdir $remotens
+ssh anna NAMESPACE=$remotens plumber
+.EE
+Now import that plumber to the local name space before starting
+.I sam
+and
+.IR 9term :
+.IP
+.EX
+NAMESPACE=/tmp/ns.anna
+mkdir $NAMESPACE
+import -n $remotens -s plumb anna
+sam &
+9term ssh anna &
+.EE
+.SH SOURCE
+.B \*9/src/cmd/import.c
+.SH SEE ALSO
+.IR 9pserve (4),
+.IR intro (4)
diff --git a/man/man4/plumber.4 b/man/man4/plumber.4
index 95259a0..0dfe68b 100644
--- a/man/man4/plumber.4
+++ b/man/man4/plumber.4
@@ -16,7 +16,7 @@
 Its behavior is programmed by a
 .I plumbing
 file (default
-.BR /usr/$user/lib/plumbing )
+.BR $HOME/lib/plumbing )
 in the format of
 .IR plumb (7).
 .PP
@@ -96,9 +96,9 @@
 include a port that was defined in earlier rules, that port will still exist (although
 no new messages will be delivered there).
 .SH FILES
-.TF /usr/$user/lib/plumbing
+.TF $HOME/lib/plumbing
 .TP
-.B /usr/$user/lib/plumbing
+.B $HOME/lib/plumbing
 default rules file
 .TP
 .B \*9/plumb
diff --git a/man/man7/INDEX b/man/man7/INDEX
index 7930266..f7c1bd2 100644
--- a/man/man7/INDEX
+++ b/man/man7/INDEX
@@ -9,7 +9,6 @@
 plot plot.7
 plumb plumb.7
 regexp regexp.7
-regexp9 regexp9.7
 thumbprint thumbprint.7
 ASCII utf.7
 UTF utf.7
diff --git a/man/man7/font.7 b/man/man7/font.7
index f651a58..4767ea1 100644
--- a/man/man7/font.7
+++ b/man/man7/font.7
@@ -76,9 +76,9 @@
 means that fonts should have, as their zeroth character,
 one with non-zero width.
 .SH FILES
-.TF /lib/font/bit/*
+.TF \*9/font/*
 .TP
-.B /lib/font/bit/*
+.B \*9/font/*
 font directories
 .SH "SEE ALSO"
 .IR graphics (3),
diff --git a/man/man7/man.7 b/man/man7/man.7
index b7522fd..0e2b52b 100644
--- a/man/man7/man.7
+++ b/man/man7/man.7
@@ -108,7 +108,9 @@
 .B \e*9
 The root directory of the Plan 9 installation.
 .SH FILES
-.B /sys/lib/tmac/tmac.an
+.B \*9/tmac/tmac.an
+.PP
+.B \*9/tmac/tmac.antimes
 .SH SEE ALSO
 .IR troff (1), 
 .IR man (1)
@@ -244,7 +246,7 @@
 .B \&"
 in font-alternation macros, such as
 .LR .BI .
-.br
+.PP
 There is no direct way to suppress column widows in 2-column
 output; the column lengths may be adjusted by inserting
 .L .sp
diff --git a/man/man7/ms.7 b/man/man7/ms.7
index b6c6788..83b9369 100644
--- a/man/man7/ms.7
+++ b/man/man7/ms.7
@@ -46,7 +46,7 @@
 preprocessors
 for equations, tables, pictures, and graphs is acceptable as input.
 .SH FILES
-.B /sys/lib/tmac/tmac.s
+.B \*9/tmac/tmac.s
 .SH "SEE ALSO"
 .br
 M. E. Lesk,
diff --git a/man/man7/plumb.7 b/man/man7/plumb.7
index 82c771b..fd30ee0 100644
--- a/man/man7/plumb.7
+++ b/man/man7/plumb.7
@@ -396,24 +396,24 @@
 include basic
 .EE
 .SH FILES
-.TF /usr/$user/lib/plumbing
+.TF $HOME/lib/plumbing
 .TP
-.B /usr/$user/lib/plumbing
+.B $HOME/lib/plumbing
 default rules file.
 .TP
-.B /mnt/plumb
-mount point for
+.B plumb
+service name for
 .IR plumber (4).
 .TP
-.B /sys/lib/plumb
+.B \*9/plumb
 directory for
 .B include
 files.
 .TP
-.B /sys/lib/plumb/fileaddr
+.B \*9/plumb/fileaddr
 public macro definitions.
 .TP
-.B /sys/lib/plumb/basic
+.B \*9/plumb/basic
 basic rule set.
 .SH "SEE ALSO"
 .IR plumb (1),
diff --git a/man/man7/regexp.7 b/man/man7/regexp.7
index 75640b9..91e73ad 100644
--- a/man/man7/regexp.7
+++ b/man/man7/regexp.7
@@ -1,21 +1,4 @@
 .TH REGEXP 7
-.de EX
-.nf
-.ft B
-..
-.de EE
-.fi
-.ft R
-..
-.de LR
-.if t .BR \\$1 \\$2
-.if n .RB ` \\$1 '\\$2
-..
-.de L
-.nh
-.if t .B \\$1
-.if n .RB ` \\$1 '
-..
 .SH NAME
 regexp \- Plan 9 regular expression notation
 .SH DESCRIPTION
diff --git a/man/man8/mk9660.8 b/man/man8/mk9660.8
index f2075f9..3339246 100644
--- a/man/man8/mk9660.8
+++ b/man/man8/mk9660.8
@@ -2,7 +2,7 @@
 .SH NAME
 dump9660, mk9660 \- create an ISO-9660 CD image
 .SH SYNOPSIS
-.B disk/mk9660
+.B mk9660
 [
 .B -:D
 ]
@@ -27,7 +27,7 @@
 ]
 .I image
 .PP
-.B disk/dump9660
+.B dump9660
 [
 .B -:D
 ]
@@ -63,7 +63,7 @@
 files named in
 .I proto
 (by default,
-.BR /sys/lib/sysconfig/proto/allproto )
+.BR \*9/proto/allproto )
 from the file tree
 .I src
 (by default,
@@ -218,8 +218,7 @@
 a Joliet directory tree.
 .IP
 .EX
-disk/mk9660 -9cj -s /n/bootes \e
-	-p /sys/lib/sysconfig/srcproto cdimage
+mk9660 -9cj -s /n/bootes -p srcproto cdimage
 .EE
 .SH SOURCE
 \*9/src/cmd/9660
diff --git a/man/secindex b/man/secindex
index 6dd0d51..4ffc83b 100755
--- a/man/secindex
+++ b/man/secindex
@@ -2,7 +2,7 @@
 builtin cd $1
 for (i in [a-z0-9:]*) {
 	b=`{echo $i | sed 's/\..*//'}
-	9sed -n '
+	9 sed -n '
 	/SH *NAM/,/SH/{
 		/SH/d
 		s/, *$//
@@ -34,4 +34,4 @@
 	q
 ' $i
 echo $b $i
-} |sort -u
+} |9 sort -u