Diff providers refactoring