Implement builder design pattern