https://cardania.com/blog/explaining-the-hardfork-combinator/