Updating core

3 things i did here:

1 - Add IIFE, encapsulating your code makes it safer for other people codes... especially for that "use strict" that would apply for all code below (which can be yours, or maybe not);

2 - Using prototypes - When attaching methods to "this", it creates a method for all instances, that means that those methods are being duplicated everytime an instance is created... using prototype gives access to those methods into all instances, and they are reused all along those... (and "this" keeps working for the instances), also it makes it easier for modularizing your lib, maybe spliting it into multiple files like enqueue.js, run.js and so on...

3 - Semicolon - Use that shit! hahahaha

Your code is still working. :)