-<ol>
-<li><a href="#about">About this document</a></li>
-<li><a href="#history">History</a></li>
-<li><a href="#versions">Software versions used at time of writing</a></li>
-<li><a href="#terminology">Terminology: devfs, sysfs, nodes, etc.</a></li>
-
-<li><a href="#why">Why? (The purpose of this document)</a></li>
-<li><a href="#basics">The basics of writing rules</a></li>
-<li><a href="#operators">Additional automated customisation for NAME and SYMLINK parameters</a></li>
-<li><a href="#regexp">Using shell-style pattern matching in keys</a></li>
-<li><a href="#keys">Key-writing basics</a></li>
-<li><a href="#identify-keys">Identifying devices through basic keys</a></li>
-<li><a href="#identify-sysfs">Identifying devices through SYSFS files</a></li>
-<li><a href="#multiple-symlinks">Using multiple SYMLINK style rules</a></li>
-<li><a href="#mode-owner-group">Controlling ownership and permissions</a></li>
-<li><a href="#example-printer">Example: Writing a rule for my USB printer</a></li>
-<li><a href="#example-camera">Example: Writing a rule for my USB-Storage digital camera</a></li>
-
-<li><a href="#usbstorage-extra">Additional notes on writing rules for USB storage</a></li>
-<li><a href="#example-cdrom">Example: Writing convenience rules for my CD drives</a></li>
-<li><a href="#example-iface">Example: Writing a rule to name my network interface</a></li>
-<li><a href="#tips">Tips for finding the appropriate places in SYSFS</a></li>
-<li><a href="#debugging">Debugging your rules</a></li>
-<li><a href="#author">Author and credits</a></li>
-</ol>
+<ul>
+<li>Introduction
+ <ul>
+ <li><a href="#about">About this document</a></li>
+ <li><a href="#history">History</a></li>
+ </ul>
+</li>
+<li>The concepts
+ <ul>
+ <li><a href="#terminology">Terminology: devfs, sysfs, nodes, etc.</a></li>
+ <li><a href="#why">Why?</a></li>
+ <li><a href="#builtin">Built-in persistent naming schemes</a></li>
+ </ul>
+</li>
+<li>Rule writing
+ <ul>
+ <li><a href="#syntax">Rule files and semantics</a></li>
+ <li><a href="#syntax">Rule syntax</a></li>
+ <li><a href="#basic">Basic rules</a></li>
+ <li><a href="#sysfsmatch">Matching sysfs attributes</a></li>
+ <li><a href="#hierarchy">Device hierarchy</a></li>
+ <li><a href="#strsubst">String substitutions</a></li>
+ <li><a href="#strmatch">String matching</a></li>
+ </ul>
+</li>
+<li>Finding suitable information from sysfs
+ <ul>
+ <li><a href="#sysfstree">The sysfs tree</a></li>
+ <li><a href="#udevinfo">udevinfo</a></li>
+ <li><a href="#sysfsalt">Alternative methods</a></li>
+ </ul>
+</li>
+<li>Advanced topics
+ <ul>
+ <li><a href="#ownership">Controlling permissions and ownership</a></li>
+ <li><a href="#external-naming">Using external programs to name devices</a></li>
+ <li><a href="#external-run">Running external programs on certain events</a></li>
+ <li><a href="#env">Environment interaction</a></li>
+ <li><a href="options">Additional options</a></li>
+ </ul>
+</li>
+<li>Examples
+ <ul>
+ <li><a href="#example-printer">USB Printer</a></li>
+ <li><a href="#example-camera">USB Camera</a></li>
+ <li><a href="#example-usbhdd">USB Hard Disk</a></li>
+ <li><a href="#example-usbcardreader">USB Card Reader</a></li>
+ <li><a href="#example-pilot">USB Palm Pilot</a></li>
+ <li><a href="#example-cdrom">CD/DVD drives</a></li>
+ <li><a href="#example-netif">Network interfaces</a></li>
+ </ul>
+</li>
+<li>Testing and debugging
+ <ul>
+ <li><a href="#testing">Putting your rules into action</a></li>
+ <li><a href="#udevtest">udevtest</a></li>
+ </ul>
+</li>
+<li><a href="#author">Author and contact</a></li>
+</ul>
+
+<h2>Introduction</h2>