Revert "Revert "fix bugs""

This reverts commit bb6e58c5f83ac089b709ca50b287fefd0d5bdd57.
Revert "Revert "Revert "fix bugs"""

This reverts commit c4c515634198ea8096c0207e02d16931e980dfac.
Revert "Revert "Revert "Revert "fix bugs""""

This reverts commit 6e25b0de2098745ef8b9902e5a66dbfbc98f13f6.