I mashed this up in my spare time.