https://betterprogramming.pub/creating-a-reliable-javascript-library-a-step-by-step-guide-6907c778341c