90% remaining some bug