http://www.geocities.com/Heartland/H...ypatterns.html