Big refactoring, make the workflow much easyer to follow.