add test, bug fix, change api.