fix and need more test