This commit fixes #23, resolves #24, resolves #25, closes #20