closes #141 closes #149 closes #157