Source code wre-written by me from JavaScript Enlightenment Book by Codey Lindley