Added by Ben Poole about 16 years ago
code commented and cleaned up. should work but untested.
View differences