added location, worker, and shift implementations