written by David Nichols
david_nichols@users.sourceforge.net
