closes #112
closes #103
closes #120
closes #118