This dependency may be a little heavy for our current use case, but we can roll with it for now and find something slimmer if it turns out yagni. Closes #77 Closes #40