Author: Antonio Manuel Hespanha.