Added Builder design pattern