fixes #41 #44 #45 #47 #50 #53 #54 #55 #57 #60 #64 #69