I don't want to sound consited or anything, but this is good, really! I just couldn't wait for #5 to come, so I wrote my own...