builder pattern
cool
add