The following volunteers have contributed code, documentation, testing and/or
support to Apache Flex Squiggly.

Apache Flex Squiggly 1.1
------------------------
Alex Harui, Chris Martin, Christofer Dutz, Eliezer Reis, Justin Mclean,
Kevin Atkinson, Mark Kessler

Apache Flex Squiggly 1.0
------------------------
Alex Harui, Justin Mclean, Kevin Atkinson, Mark Kessler, OmPrakash Muppirala,
Peter Ent

If you've missing from this list please get in touch and you'll appear in future
versions of this document.
