https://medium.com/@ben.nour_68691/pythons-super-function-and-method-resolution-order-explained-7e67af9745b6