closes #1
closes #2
closes #4