http://www.geocities.com/winroseshel...ng/pattern.htm