Advances in computing power and diagnostic techniques have made it easier to understand the way flows behave. In contrast, understanding why they behave that way and how we might change that behaviour is not that straightforward and forms the motivation for this talk. I will describe how gradient information obtained using adjoints can be used to provide sensitivity information in a cost-effective manner. In particular, I will use this sensitivity information to identify regions of the flow that are influential in causing oscillations in jets and flames, and how one might change the frequency and prominence of these structures by making small changes to the design. I will go on to show how the framework is easily applicable to 'optimizing' other aspects of a flow, for example, identifying the 'best' place to ignite a mixture of fuel and oxidizer.