Initial commit. Added a promise interface (that isnt an interface... will rename), as well as a promise listener.