Fixes #80, fixes #355, fixes #258