Rework component APIs to make them more consistent.