Copyright (c) 2002-2010 Bob Hutchison see COPYING