fixed #60, fixed #65, fixed #77, progress on #82, #122, #142