closes #21
closes #20
closes #20