Implement spread as defined [here](https://link.springer.com/content/pdf/10.1007/s13735-018-0154-2.pdf)