We basically should be using a builder pattern + newtypes here. Alternately, we can explore doing this "manually" and dropping that crate altogether.