since all constructors call both `crate()` and `config()`, we can merge them into one.