adding builder pattern