More work on generic diff