builder pattern add