Documentation by Daniel Gardeazabal.