https://bodoniwasuni.github.io/post/oc-couple-base/