Source: https://are.berkeley.edu/~sberto/gap.pdf