closes #23 and #22
closes #24
closes #25