https://medium.com/@kin.long.kelvin.lee/a-case-for-abstraction-in-scientific-programming-9791290687ec