https://blog.classyendeavors.com/sharing-behavior-in-javascript-using-the-prototype-pattern-3d8fb5496e79