closes #3
closes #5
closes #39