diff have been completely refactored
- yet to come:
refactor diff concat
refactor apply