closes #5
closes #2 closes #1