closes #121
closes #118
closes #102
closes #117