If you use any of this code, please acknowledge where it came from.  
