All the hard work done by Chris Broadfoot (cbro@google.com). Minor modifications by Bryce Thomas (bryce.m.thomas@gmail.com) and Petr Pridal (petr.pridal@klokantech.com).