https://medium.com/0xcode/inheritance-in-smart-contracts-using-object-oriented-methodology-ca43fa4775a1