fixes#28 fixes#27 fixes#26 fixes#24 fixes#23 fixes#19