https://sheremetov.com/oop/oop-pattern-adapter/