closes #18
closes #19
closes #24
closes #23