Main author is Jeremy Theler.

Contributions from
Esteban Pellegrino
Juan Pablo Gomez Omil
Ramiro Vignolo
Pablo Camusso
