fixes #80, fixes #66, fixes #61, fixes #45, fixes #68