builder pattern for generating offers