add some diff logic