fix a lot of bugs;