finished draft diff expr