Implementing the builder pattern