re-written ObjectBuilder on promises