dependency
simplify
change function api
debug