refactor: factor out dynamic worker creation