port to es5 and add es6 shims for object prototypes instead