The complete design chain in Computational Fluid Dynamics (CFD) covers the parameterization of the object to be optimized like, e.g., an air foil, the usage of a Computer Aided Design (CAD) tool to actually construct the air foil and a flow solver to compute the flow around the air foil. The optimization of such a complete design chain that includes a CAD tool is still a severe challenge. In this talk we present the technique of algorithmic differentiation (AD) to compute exact derivative information for a given simulation code. We discuss how AD can be applied to the CAD kernel within OpenCASCADE Technology and a suitable flow solver taking also the complexity of the derivative information into account. We will see that a gradient-based optimization using adjoint information is the only tractable way. First numerical results for the optimization of a U-bend pipe used frequently as a cooling channel and of the TU Berlin stator as one ex ample from turbo machinery are shown. This includes also a verification of the computed derivatives.