add more test, clean up