The builder pattern without boilerplate code