reimplement Sweetened in terms of new components