support extendable diff by Differ