fixed #23
fixed #19 fixed #22