Main author: Paul Sopka Contributors: Thanks to: Laurent Bercot Dan J. Bernstein Paul Jarc Jonathan de Boyne Pollard