implement the work state