[dev] add builder Design pattern