add builder design patterns.