closes #1
closes #2
closes #3