producer-first approach