fixed #6
fixed #1
fixed #5
fixed #4
fixed #7
fixed #2