Rework the work functions