Just a little nit -- the 2nd paragraph seems to equate the and and & operators. This is incorrect, and is && (and a special low-precdence version of it, at that).
Other then that, and the other nits mentioned by liz and halley, it looks quite nice. You've got my ++, and tutorials vote if you fix them up.
Warning: Unless otherwise stated, code is untested. Do not use without understanding. Code is posted in the hopes it is useful, but without warranty. All copyrights are relinquished into the public domain unless otherwise stated. I am not an angel. I am capable of error, and err on a fairly regular basis. If I made a mistake, please let me know (such as by replying to this node).