add test code, but still have not tested