1 A very special thanks is due to the following people and groups.
3 Note: as hard as we've tried, it is impossible to perfectly maintain
4 this file. If you are aware of someone who you think should be
5 included here, PLEASE let me know. Projects like this are made
6 possible only by the help and hard work of others. I want to properly
7 credit everyone who has contributed to this project.
10 A1 Free Sounds <techie@mail.ev1.net> http://www.a1freesoundeffects.com
11 Granted permission for the flightgear project to use some of the
12 sound effects from their site.
14 Mark Akermann <flightgear@akermann.org>
15 Redone sun code. The sun now consists of three textures with individual
16 colors which are calculated based on the effect of light scattering.
17 This is accomplished by using various environmental data and by
18 calculating the distance the light travels through the atmosphere.
21 Raul Alonzo <amil@las.es>
22 Mr. Alonzo is the author of Ssystem and provided his kind permission
23 for using the moon texture. I also used parts of his code as a template
24 when adding the texture. Ssystem Homepage can be found at:
25 http://www1.las.es/~amil/ssystem
28 Michele America <nomimarketing@mail.telepac.pt>
29 Contributed to the HUD code.
32 Andrei Barbu "T"Eval" teval@myrealbox.com
33 Designed and implemented the current version of the FlightGear website.
36 Michael Basler <pmb@knUUt.de>
37 Author of the Getting Started guide.
40 Paul Beardsley <Beardspa@hotmail.com>
41 The 1903 Wright Flyer was inspired by a model contributed by Paul
42 Beardsley. Very little of the original model remains, but without
43 Paul's excellent work we might not have our own 1903 Flyer. Model
44 was reworked and retextured by Jim Wilson.
47 Jon S. Berndt <jon@jsbsim.org>
48 Chief architect of JSBSim, the default flight dynamics model (FDM)
49 for FlightGear. Jon's professional work has involved simulation and
50 prototyping for vehicles ranging from the F-16 to his current work
51 on the space shuttle and future manned launch vehicles. Since 1998
52 Jon has been working on creating JSBSim together with co-author Tony
53 Peden. JSBSim is an object-oriented, multi-platform aerospace
54 vehicle simulator that can be integrated with broader flight
55 simulation programs (since it provides no visual model), or run in a
56 standalone mode for batch runs. For more information, see the JSBSim
57 home page at: http://www.jsbsim.org
60 Paul Bleisch <pbleisch@acm.org>
61 Paul redid the "debug" system so that it would be much more flexible,
62 so it could be easily disabled for production system, and so that
63 messages for certain subsystems could be selectively enabled.
64 Also contributed a first stab at a config file/command line parsing
68 Jim Brennan <jj@kingmont.com>
69 Provided a big chunk of online space to store USA scenery for Flight Gear.
72 Bernie Bright <bbright@bigpond.net.au>
73 Many C++ style, usage, and implementation improvements.
74 STL portability, tons o' stuff. :-)
75 Threading support and threaded tile pager.
78 Bernhard H. Buckel <buckel@mail.uni-wuerzburg.de>
79 Contributed the README.Linux
80 Co-Author of the "Getting Started Manual"
83 Gene Buckle <geneb@deltasoft.com>
84 Gene has done a lot of work getting FG to compile with the MSVC++
85 compiler. Also, he has pushed, proded, and bugged me endlessly to
86 do my stuff right. (I mean that in a good way, because sometimes
87 when the little nudge in the right direction isn't working, I need
88 a good hard shove.) :-)
91 Ralph Carmichael <ralph@pdas.com>
92 Thanks to Ralph for his support of the FlightGear project. At
93 Public Domain Aeronautical Software you will find the PDAS CD-ROM for sale,
94 packed with great programs of use to aeronautical engineers. At this web
95 site there are also some sample downloads to show what is on the CD.
99 Didier Chauveau <chauveau@math.univ-mlv.fr>
100 Provided some initial code to parse the 30 arcsec DEM files found at:
101 http://edcwww.cr.usgs.gov/landdaac/gtopo30/gtopo30.html
104 John Check <j4strngs@rockfish.net>
105 Maintains the base package repository
108 New instrument panel configurations
111 Dave Cornish <dmc@halcyon.com>
112 Created our new, super cool, runway textures.
113 Created some of our cloud textures.
116 Oliver Delise <delise@mail.isis.de>
117 FAQ Maintainer, Documentation, Public Relations.
118 Author of (the now depreciated) networking / multi-user support.
119 Founder of the FlightGear MultiPilot Project :
120 http://www.isis.de/members/~odelise/progs/flightgear
123 Dave Eberly <eberly@magic-software.com>
124 Contributed some sphere interpolation code used by Christian Mayer's
125 weather data base system. Go to Dave's web site. He has a ton of
126 really useful looking code available there.
127 http://www.magic-software.com
131 Vector 2D, 3D, 4D and Matrix 3D and 4D inlined C++ classes. (Based on
132 Graphics Gems IV ed. Paul S. Heckbert)
133 http://www.animats.com/simpleppp/ftp/public_html/topics/developers.html
136 Francine Evans <evans@cs.sunysb.edu>
137 Wrote the @#$@#$@% GPL'd tri-striper we use and "love". :-)
138 http://www.cs.sunysb.edu/~evans/stripe.html
141 Oscar Everitt <bigoc@premier.net>
142 Created single engine piston engine sounds as part of an F4U package
143 for FS98. They are pretty cool and Oscar was happy to contribute
144 them to our little project.
147 Bruce Finney <bfinney@gte.net>
151 Melchior Franz <mfranz@aon.at>
152 Reworked the joystick driver detection code, added high/low support for "hats".
153 Nasal-ified the Saitek Cyborg Gold 3D (USB) joystick which now forms
154 the basis of a lot of programmable joysticks.
155 Ruthlessly hunted down memory leaks in FlightGear, SimGear, and JSBSim.
156 Maintains the only fully working helicopter model in FlightGear (Bolkow 105).
157 Made the GUI code fully XML configurable and added support for themes,
158 reworked property browser, route manager and several other dialogs.
159 Wrote Dynamic Cockpit View, Fly-By view and lots of other Nasal code.
160 Implemented Nasal "listeners".
163 Jean-loup Gailly and Mark Adler <zlib@gzip.org>
164 Authors of the zlib library. Used for on-the-fly compression and
165 decompression routines.
166 http://www.cdrom.com/pub/infozip/zlib/
169 Thomas Gellekum <tg@ihf.rwth-aachen.de>
170 Changes and updates for compiling on FreeBSD
173 Neetha Girish <neethagirish@usa.net>
174 Contributed the xml configurable HUD changes.
177 Jeff Goeke-Smith <jgoeke@voyager.net>
178 Contributed our first autopilot. (Heading Hold)
179 Better autoconf check for external timezone/daylight variables in
183 Michael I. Gold <gold@puck.asd.sgi.com>
184 Patiently answered my endless "newbie" OpenGL questions.
185 His effort alone has made me a great SGI fan.
188 Habibie <habibie@MailandNews.com>
189 RedHat package building changes for SimGear.
192 Dave Haskell <dave@haskell.demon.co.uk>
193 Original exterior textures for the Cessna 310 U-3A model. Only a few
194 minor modifications were made.
197 Mike Hill <mikehill@flightsim.com>
198 Contributed 3d aircraft models to our project.
199 http://www.flightsimnetwork.com/mikehill/home.htm
202 Erik Hofman <erik@ehofman.com>
203 Major overhaul and parameterization of the sound module, to allow
204 aircraft-specific sound configuration at runtime.
205 Did a lot of code improvements and bug-hunting.
206 Creator of most of the ground textures.
207 Maintainer of the F-15, F-16, F-104, T-37, PC-7, Fokker 50 and 100 models.
208 Keeps the Irix port current.
209 Localization support.
212 Charlie Hotchkiss <clhotch@pacbell.net>
213 Worked on improving and enhancing the HUD code.
214 Lots of code style tips and code tweaks ...
217 Bruce Jackson of NASA <e.b.jackson@larc.nasa.gov>
218 Developed the LaRCsim code under funding by NASA which we use to provide
219 the flight model. Bruce has patiently answered my many, many questions.
220 http://dcb.larc.nasa.gov/www/DCBStaff/ebj/ebj.html
223 Maik Justus <fg@mjustus.de>
224 Developed YASim's helicopter/rotor logic.
225 Implemented aerotowing, water plane and anchor support for YASim, and
226 made its gear aware of the surface material.
227 Wrote the Bo105 helicopter FDM configuration file.
231 Debian packaging of SimGear/FlightGear
234 Richard Kaszeta <bofh@me.umn.edu>
235 Contributed screen buffer to ppm screen shot routine.
236 Rich has also helped in the early development of the Flight Gear "altitude
237 hold autopilot module" by teaching Curt Olson the basics of Control Theory
238 and helping him code and debug early versions. Curt's "Boss" Bob Hain
239 also contributed <bob@me.umn.edu>. Further details available at:
240 http://www.menet.umn.edu/~curt/fgfs/Docs/Autopilot/AltitudeHold/AltitudeHold.html
241 Rich's Homepage: http://www.menet.umn.edu/~kaszeta
244 Vassilii Khachaturov <vassilii@tarunz.org>
245 Support of navaids as autopilot waypoints.
246 Switching the tower view to a different tower at any time.
247 Various code, GUI, and documentation fixes and updates.
250 Tom Knienieder <tom@knienieder.com>
251 Ported Steve's Audio library first to OpenBSD and IRIX and
252 after that also to Win32
255 Reto Koradi <kor@mol.biol.ethz.ch>
256 Helped me get on track with setting up fog effects.
257 http://www.mol.biol.ethz.ch/wuthrich/people/kor
260 Bob Kuehne <rpk@who.net>
261 Redid the Makefile system so it is simpler and more robust.
264 Chris Lampard <c.lampard@ntlworld.com>
265 Original exterior geometry for the Cessna 310 U-3A model. Several
266 modifications made but most of the exterior is as is converted from
267 Chris's original. The interior cockpit was added by Jim Wilson.
270 David Luff <david.luff@nottingham.ac.uk>
271 Contributed heavily to the IO360 piston engine model.
272 Created the ATC intelligent traffic subsystem.
273 Creator of TaxiDraw, a program to modify the taxiway layout
277 Lewis Magruder <blackhawk96@hotmail.com>
278 Original A-4 Blue Angels exterior model and textures. Lewis's work
279 is pretty much as converted from the original. The interior cockpit
280 was added by Jim Wilson.
283 Christian Mayer <flightgear@christianmayer.de>
284 Working on a multi-lingual conversion tools for fgfs
285 as a demonstration of technology ;-)
286 Contributed code to read msfs formated texture files.
287 Working on a completely new weather subsystem.
288 Working on a balloon simulator.
291 David Megginson <david@megginson.com>
292 Contributed a patch to allow mouse input to control the yoke.
293 Contributed financially towards hard drive space for use by the
295 Updates to README.running.
296 Working on getting fgfs and ssg to work without textures.
297 Also added the new 2D panel and the save/load support.
298 Reorganization of the GUI to make it XML configurable.
300 Generalized input module
301 3D model animation module
302 initial take of sound-effects module
303 Random ground cover objects
304 Vacuum and pitot systems.
307 Eric Mitchell <mitchell@mars.ark.com>
308 Contributed some topnotch scenery textures. His textures were
309 all original creations.
312 Cameron Moore <cameron@unbeatenpath.net>
315 Self-proclaimed code janitor.
319 Anders Morken <amrken@online.no>
320 Maintained the European mirror of the FG web pages.
321 Unfortunately this mirror has been taken down due to reglementation
322 changes including an enforcement to 10 MB space per subscriber limit
323 which was way too small for the evergrowing FGFS Project's Files.
324 He'd be happy to maintain a new one if he could find a place to put it,
325 so if you have an idea, contact him!
328 Alan Murta <amurta@cs.man.ac.uk>
329 http://www.cs.man.ac.uk/aig/staff/alan/software/
330 Created the Generic Polygon Clipping library
333 Phil Nelson <phil@cs.wwu.edu>
334 Author of GNU dbm. gdbm is a set of database routines that use
335 extendible hashing and works similar to the standard UNIX dbm routines.
338 Alexei Novikov <anovikov@heron.itep.ru>
339 Created European Scenery
340 Contributed a script to turn fgfs scenery into beautifully rendered
342 Contributed a first draft of a scenery creation howto.
345 Curt Olson <http://www.flightgear.org/~curt>
346 Curt is responsible for overall project and source code management.
347 He has his hands in many of the areas, but is primarily responsible
348 for the scenery subsystem, as well as much of the infrastructure in
350 Handles most parts of the regular scenery rebuild, including lots of
351 improvements of the vertex calculation code.
352 Added the nw PID based, configurable autopilot code.
353 Added the Electrical system.
354 Added Runway lighting.
358 His TR Library: http://www.mesa3d.org/brianp/TR.html
359 And also Mesa of course: http://www.mesa3d.org
362 Tony Peden <apeden@earthlink.net>
363 Contributions on the flight model front, including a LaRCsim based
364 Cessna 172. JSBsim: the initial conditions code, a more complete
365 standard atmosphere model, and other bugfixes/additions.
368 Robin Peel <robin@cpwd.com>
369 Maintains the ever growing worldwide airport, runway, and navigation
370 aid database for the Flight Gear project as well as for X-Plane.
373 Alex Perry <alex.perry@ieee.org>
374 Contributed code to more accurately model VSI, DG, Altitude.
375 Contributed to the Install and Getting Started manual.
378 Friedemann Reinhard <mpt218@faupt212.physik.uni-erlangen.de>
379 Contributed beginnings of a textured instrument panel.
382 Frederic Bouvier <frbouvi@wanadoo.fr>
383 Added French language support
384 Keeps FlightGear MSVC compatible.
385 Did a number of code changes to improve the animation code.
386 Added a number of animations that improves the visual system quite a lot.
387 Did a nice job populating the San Francisco bay area by adding a lot
391 Petter Reinholdtsen <pere@games.no>
392 Incorporated the Gnu automake/autoconf system (with libtool).
393 This should streamline and standardize the build process for all
394 Unix-like platforms. It should have little effect on IDE type
395 environments since the don't use the Unix make system.
398 William Riley <riley@technologist.com>
399 Contributed code to add "brakes".
400 Patch to support a first joystick with more than two axes.
401 World scenery based on vmap0 data.
404 Andy Ross <andy@plausible.org>
405 Contributed a new configurable FDM, "YASim", based on geometry
406 information rather than aerodynamic coefficients.
407 Added support for placing 2D panel objects in 3D space.
408 Modified the HUD code to make it more accurate and added 3D support.
409 Modified the UI code to allow a far more flexible grouping system.
410 Added the Nasal scripting language and added FlightGear integration.
413 Paul Schlyter <pausch@saaf.se>
414 Mr. Schlyter provided Durk Talsma with all the information
415 he needed to write the astro code. Mr. S. is also willing
416 to answer astro-related questions whenever one needs to.
417 http://welcome.to/pausch
420 Chris Schoeneman <crs@millpond.engr.sgi.com>
421 Contributed some 3d sound playing code for Irix, Win32, and Linux
422 It is unclear if this code will be used directly, but it certainly
423 will have an influence on the development of our own audio library.
426 Phil Schubert <philip@zedley.com>
427 Contributed various textures and engine modelling.
428 http://www.zedley.com/Philip/index.htm
431 Jonathan R Shewchuk <Jonathan_R_Shewchuk@ux4.sp.cs.cmu.edu>
432 Author of the Triangle program. Triangle is used to calculate the
433 Delauney triangulation of our irregular terrain.
436 Gordan Sikic <gsikic@public.srce.hr>
437 Contributed a cherokee flight model for LaRCsim.
438 Currently is not working and needs to be debugged.
439 Use configure --with-flight-model=cherokee
440 to build the cherokee instead of the navion.
443 Michael Smith <msmith99@flash.net>
444 Contributed cockpit graphics, 3d models, logos, and other images.
445 Project Bonanza - http://members.xoom.com/ConceptSim/index.html
448 Martin Spott <Martin.Spott@uni-duisburg.de>
449 Contributed to the installation / user guide.
452 Martin Dressler <dr@musicabona.cz>
453 Created some outstanding panel instrumentation textures
454 for use in full-screen mode.
457 U.S. Geological Survey
458 Provided geographic data used by this project
459 http://edcwww.cr.usgs.gov/doc/edchome/ndcdb/ndcdb.html
462 Durk Talsma <d.talsma@chello.nl>
463 Accurate Sun, Moon, and Planets.
464 Sun changes color based on position in sky.
465 Moon has correct phase and blends well into the sky.
466 Planets are correctly positioned and have proper magnitude.
467 Help with time functions, gui, and other misc stuff.
468 Added the AirTraffic module for scheduled AI airliners and other aircraft.
469 2D Cloud layers (nifty).
470 http://people.a2000.nl/dtals
473 UIUC - Department of Aeronautical and Astronautical Engineering
474 Contributed modifications to LaRCsim to allow loading of aircraft
475 parameters from a file. These modifications were made as part of an
476 icing research project.
478 Did the coding and made it all work:
479 Jeff Scott <jscott@students.uiuc.edu>
480 Bipin Sehgal <bsehgal@uiuc.edu>
481 Michael Selig <m-selig@uiuc.edu>
483 Helped support the effort
484 Jay Thomas <jthomas2@uiuc.edu>
485 Eunice Lee <ey-lee@students.uiuc.edu>
486 Elizabeth Rendon <mdfhoyos@md.impsat.net.co>
487 Sudhi Uppuluri <suppulur@students.uiuc.edu>
490 Mark Vallevand <Mark.Vallevand@UNISYS.com>
491 Contributed some METAR parsing code.
492 Contributed some win32 screen printing routines.
495 Gary R. Van Sickle <tiberius@braemarinc.com>
496 Contributed some initial GameGLUT support and other fixes.
497 Has done some interesting preliminary work on a binary file format
498 http://www.woodsoup.org/projs/ORKiD/fgfs.htm
500 Has set up a 'Cygwin Tips' site that has been very helpful to many
501 people in getting a Cygwin Unix-on-Windows build environment set up
502 so they can build FG effectively.
503 http://www.woodsoup.org/projs/ORKiD/cygwin.htm
506 Norman Vine <nhv@yahoo.com>
507 Provided more than uncountable URL's to the "FlightGear Community".
508 Many performance optimizations throughout the code.
509 Many contributions and much advice for the scenery generation section.
510 Lots of windoze related contributions.
511 Contributed wgs84 distance and course routines.
512 Contributed a great circle route autopilot mode based on wgs84 routines.
513 Many other GUI, HUD, and autopilot contributions.
514 Contributed a patch to allow mouse input to control view direction.
515 Ultra hires tiled screen dumps.
516 Contributed the initial 'goto airport' and 'reset' functions
517 Contributed the initial http image server code
518 Did the build instructions for OpenAL (and SDL) for Cygwin.
521 Roland Voegtli <voegtli@sanw.unibe.ch>
522 Great photorealistic textures.
523 Founder of European Scenery Project for X-Plane
524 http://www.g-point.com/xpcity/esp/
527 Carmelo Volpe <carmelo.volpe@mednut.ki.se>
528 Contributed some work to porting Flight Gear to the Metro Works
529 development environment (PC/Mac)
532 Darrell Walisser <dwaliss1@purdue.edu>
533 Contributed a large number of MacOS changes and has somehow managed
534 to get a pile of code written by a bunch of people who've never seen
535 a Mac to compile and run on said platform.
536 Provides MacOS-specific info in the docs.
539 Davud Culp <davidculp2@attbi.com>
540 Changed the layout of the conbtrolls section and added a great number
541 of extra controls which will prove to be usefull no and for the future.
542 Contributed a number of aircraft configuration files, including a T-38 and
544 Implemented the AIModels subsystem (originally based on the ATC traffic code)
545 and extended it to support ships, aircraft, ballistic objects, thunder-storms,
547 Added a lot of updated to JSBSIm, esp. for the turbine section.
550 Ed Williams <Ed_Williams@compuserve.com>
551 Contributed magnetic variation code (impliments Nima WMM 2000)
552 We've also borrowed from Ed's wonderful aviation formulary at various
554 http://www.best.com/~williams/index.html
557 Jim Wilson <jimw@kelcomaine.com>
558 Wrote a major overhaul of the viewer code to make it more flexible
559 and modular. Contributed many small fixes and bug reports.
560 Contributed the the pui property browser.
561 Contributed to the autopilot.
562 Created several excellent 3D aircraft models, including the p-51,
563 Wright Flyer and the Boeing 747.
566 Jean-Claude Wippler <jcw@equi4.com>
567 Author of MetaKit - a portable, embeddible database with a portable
568 data file format. This software is not GPL'd but the author is kindly
569 allowing us to bundle MetaKit with our code. MetaKit has a liberal
570 X/MIT-style license. Please see the following URL for more info:
571 http://www.equi4.com/metakit
574 John Wojnaroski <castle@mminternet.com>
575 Open Glass Cockpit project
579 Lee Elliot <leee@spatial.freeserve.co.uk>
580 Author of the YF-23, A-10, Ann225, B-52 and TSR-2 models.
581 Did a lot of suggestions for better aircraft modelling, some of which
582 resulted in code changes to accomplish them.
585 Innis Cunningham <innisc@hotmail.com>
586 Modelled the 737 and contributed to the T38.
589 Vivian Meazza <vivian.meazza@lineone.net>
590 Added a number of excellent aircraft models including the Hawker Hunter
592 Provided realistic wind, gravity and drag calculations for AIBallistic models,
593 as well as terrain intersections (impacts) of submodels.
594 Added the Fresnel Lens Optical Landing System and AI code for AICarrier and
595 AIShip, and implemented the TACAN navigation instrument
598 David Culp <davidculp2@comcast.net>
599 Added the AI model and scenario code which allows non interactive models
600 (like aircraft, ships, ballistic models, storms and thermals) to move
601 around the scenery in a predefined way. Every model can have it's own
602 special characteristics. The thermal model for instance is a non-visible
603 model that creates an updraft around it's center.
606 Mathias Fröhlich <Mathias.Froehlich@gmx.net>
607 Implemented the groundcache code which made it possible for aircraft
608 to follow the ground precisely and, as a result, made it possible to
609 land on aircraft carriers.
610 Modified YASim, JSBSim and LaRCsim to support the groundcache code.
611 Reorganized the code to eliminate the viewer jitter for close by objects.
614 Harald Johnsen <hjohnsen@evc.net>
615 Added a new 3D cloud implementation which also works on big-endian machines.
616 This code allows for clouds of any types and any shapes (and even deformation
618 Implemented volumetric shadowing.
621 Roy Vegard Ovesen <rvovesen@tiscali.no>
622 Implemented the KAP140 autopilot.
623 Added a generic, XML configurable, autopilot framework.
624 Added an Altitude encoder.
626 Made the instruments code much more configurable, it is now possible to only
627 include instruments that are actually present.
628 Added several high level, configurable filter implementations for use by
632 Stuart Buchanan <stuart_d_buchanan@yahoo.co.uk>
633 Substantial additions to the Getting Started Manual
634 Enhancements to the Cessna-310 3d model.
635 Added a generic yoke model, a generic throttle quadrant model and a
636 generic pedal set model.
639 Stefan Seifert <nine@detonation.org>
640 Added the save-on-exit option to save the user preferences at program exit.
643 Space Imaging, Inc http://www.spaceimaging.com/
644 Space Imaging has allowed us to use the images in their archive for
645 commercial and non-commercial use, provided the original image can't be
646 extracted from the textures.
647 Some (if not all) of the best textures in use by FlightGear wouldn't be
648 possible without the satellite images provided by them.
651 Airservices Australia
652 Duncan McCreanor and Diarmuid Tyson created a multiplayer engine for
653 FlightGear when putting together a demonstration to show the possibilities
654 of using Flightgear as the basis for an Air Traffic
657 SkyscraperPage.com http://skyscraperpage.com
658 SkyscraperPage.com has allowed us to use their building diagrams to
659 make textures and 3d models of their buildings.
662 WoodSoup Project http://www.woodsoup.org
663 [ FlightGear no longer uses woodsoup services, but we appreciate
664 the support provided to our project during the time they hosted us. ]
665 Provided computing resources and services so that the Flight Gear
666 project could have real home. This includes, web services,
667 ftp services, shell accounts, email lists, dns services, etc.
670 Robert Allan Zeh <raz@cmg.FCNBD.COM>
671 Helped me tremendously in figuring out the Cygnus win32 compiler and
672 how to link with .dll's. With out him the first runable win32
673 version of FG would have been impossible.
680 THIS DOCUMENT WAS INITIALLY WRITTEN BY
682 Curt L. Olson <http://www.flightgear.org/~curt>
685 THE CONTENTS WERE LASTLY RESEARCHED AND UPDATED MARCH, 8 2000
687 Oliver Delise <delise@mail.isis.de>
690 Updated 2001-12-11 by David Megginson, david@megginson.com
693 Updated 2005-04-02 by Erik Hofman, erik@ehofman.com