Implementation of Builder design pattern