new distributed refactor