Fixes #2 and #5 and #6