higher level API for worker