https://math.uwaterloo.ca/~lpoirrie/