fixed #5
fixed #8
fixed #9
fixed #10
fixed #12