Project submitted for The Great Mind Challenge contest in 2012.