Sophie
Sample code, no copyright; use as you see fit. ZSI tips and techniques. Self-commented, if at all.