https://blog.stackademic.com/object-coupling-in-kotlin-tips-for-cleaner-more-maintainable-code-29f19af39a58