#21 fixed
#19 fixed
#4 fixed