https://betterprogramming.pub/6-principles-to-write-better-modules-for-your-ios-applications-3257c26e5df2