add doc builder pattern