closes #2 closes #4