Transcribed by Jason Maynard and Steve Petrey for educatinal purposes.