develop builtin functions but diff