rework impl