fixed #8
fixed #7 #6 #5 #1