closes #1, closes #2, closes #3, closes #7, and closes #11