fixed #1
fixed #2
fixed #3
fixed #5
fixed #6
fixed #7