closes #29
closes #30
closes #31