
I want to thank all who contributed to this project and especially to:
(in alphabetical order)

Thomas Bogendörfer (tsbogend@bigbug.franken.de)
  Tester, lots of bugfixes and hints.

Alan Cox (alan@lxorguk.ukuu.org.uk)
  For help getting into standard-kernel.

Henner Eisen (eis@baty.hanse.de)
  For X.25 implementation.

Volker Götz (volker@oops.franken.de)
  For contribution of man-pages, the imontty-tool and a perfect
  maintaining of the mailing-list at hub-wue.

Matthias Hessler (hessler@isdn4linux.de)
  For creating and maintaining the FAQ.

Bernhard Hailer (Bernhard.Hailer@lrz.uni-muenchen.de)
  For creating the FAQ, and the leafsite HOWTO. 

Michael 'Ghandi' Herold (michael@abadonna.franken.de)
  For contribution of the vbox answering machine.

Michael Hipp (Michael.Hipp@student.uni-tuebingen.de)
  For his Sync-PPP-code.

Karsten Keil (keil@isdn4linux.de)
  For adding 1TR6-support to the Teles-driver.
  For the HiSax-driver.

Michael Knigge (knick@cove.han.de)
  For contributing the imon-tool

Andreas Kool (akool@Kool.f.EUnet.de)
  For contribution of the isdnlog/isdnrep-tool

Pedro Roque Marques (roque@di.fc.ul.pt)
  For lot of new ideas and the pcbit driver.

Eberhard Mönkeberg (emoenke@gwdg.de)
  For testing and help to get into kernel.

Thomas Neumann (tn@ruhr.de)
  For help with Cisco-SLARP and keepalive

Jan den Ouden (denouden@groovin.xs4all.nl)
  For contribution of the original teles-driver

Carsten Paeth (calle@calle.in-berlin.de)
  For the AVM-B1-CAPI2.0 driver

Thomas Pfeiffer (pfeiffer@pds.de)
  For V.110, extended T.70 and Hylafax extensions in isdn_tty.c

Max Riegel (riegel@max.franken.de)
  For making the ICN hardware-documentation and test-equipment available.

Armin Schindler (mac@melware.de)
  For the eicon active card driver.

Gerhard 'Fido' Schneider (fido@wuff.mayn.de)
  For heavy-duty-beta-testing with his BBS ;)

Thomas Uhl (uhl@think.de)
  For distributing the cards.
  For pushing me to work ;-)

