Fix bug 1.
Fix bug 2.
Fix bug 3.
Fix bug 4.
Fix bug 5.