closes #18 closes #19