closes #8 closes #4