interface for Diff