closes #5 & closes #16