(C) 2008-2009 J Fishenden. With acknowledgements to Jeff Paries.   fishenden.com