Fixes #68, fixes #66, fixes #65, fixes #53, fixes #51