closes #45
closes #54
closes #47