Thanks go to (this list is REALLY out-of-date):

F. Nicolaas Benders <benders@pinpoint.com>
Lars Bohn <lars-erik-christian.bohn@student.uni-ulm.de>
Jim Chapman <jim.chapman@iname.com>
Robert Collier <rob@lspace.org>
Steven Dewinter <steven@zeus.rug.ac.be>
Arne Fitzenreiter <arne.fitzenreiter@gmx.de>
Alejando Garcia <alexgc@edu.aytolacoruna.es>
Matthew Grant <grantma@anathoth.gen.nz>
Mark Hahn <hahn@coffee.psychology.mcmaster.ca>
Andreas Hofmeister <Andreas.Hofmeister@pyramid.de>
Oskari Jaaskelainen <osi@fyslab.hut.fi>
Joshua Jensen <joshua@redhat.com>
Jason Lambert <jlambert@lambert-comm.net>
Christoph Lameter <christoph@lameter.com>
Miles Lane <miles@amazon.com>
Janne Liimatainen <liimjann@trade.hamkk.fi>
Benoit Locher <themagpie@wanadoo.fr>
Daniel Lopez <daniel@rawbyte.com>
Stuart Lynne <sdjl@fireplug.net>
Andrew McRory <amacc@iron-bridge.net>
David S. Miller <davem@redhat.com>
Philippe Moutarlier <philippe@kscable.com>
Petr Novopashenniy <pety@au.ru>
Monte Ohrt <monte@ispi.net>
Joachim Ott <ott@ardala.han.de>
Kristian Rietveld <kristian@planet.nl>
Jacob Schroeder <jacob@quantec.de>
Bart de Schuymer <bart.de.schuymer@pandora.be>
Heikki Vatiainen <hessu@cs.tut.fi>
Ernest Yik <ernestyik@cuhk.edu.hk>

and everyone else I forgot. Thanks also go to Leiden University
for letting me use their equipment and allowing me to work on this
during work hours.


I would also like to express my thanks and eternal gratitude to
Margaret Suda. I hope you'll read this some day.
