closes #34
closes #35
closes #33
closes #36