added some new function and write unittests