/* What you are seeing is a work in progress. Source and comments it contains could be dangerous, profane, or just plain wrong. While I generally don't publish source code unless I feel it's in a semi-production state (or at least to the point where someone somewhere could benefit from it), I can't guarantee anything. If you use this code and the genie of your computer (or your cube!) escapes in a puff of smoke, I will not be held liable. You have been warned. This code may be ugly, incomplete, or just plain wrong. No F'in warranty implied! Andrew K 2005 andrew@aklabs.net */