created builder pattern