closes #2, closes #3, and closes #4