Fixes #1, fixes #2, fixes #3, fixes #4, fixes #5, fixes #6, and fixes #7