#28 fixed #23 fixed #27 fixed