Use public methods to create containers

The short answer is I want to promisify all the things and this change allows me to overload the public api as a whole so I can do this.

(longer version) Promises are part of JS in the near future http://wiki.ecmascript.org/doku.php?id=strawman:promises