// fixme: put source in its own crate
// fixme: rename source?
// fixme: split things out into core and rest?

// fixme: refactor all methods?
// fixme: into_string should use debug
// fixme: make replace empty a lazy static?
// fixme: make fold argument non-mutable?
