WIP: squash into API

return object so that we can return errors, source maps in the future etc..