add build design pattern