Copyright (c) 2007-2008 by John Altenmueller