address @tschaub's concern that object structure returned is not consistent, so make sure closure does not change our property names of the returned object