https://www.cs.mu.edu/~brylow/