fixed #13
fixed #14
fixed #18
fixed #19
fixed #20