separate worker into smaller files