https://neurotechnus.com/en/model-agnostic-abstraction-layer/