closes #22 closes #23