fix a lot of bugs.