Unco
Unco - short for "uncoordinated" is an astonishingly good drill for improving the rhythm and timing of your stroke. Whether you have timing issues through your catch phase, pull through, body rotation or breathing, Unco should help you to correct them.
If is essentially a one armed drill where your non-stroking arm rests by your side and you breathe away from your stroking arm on every single stroke. It should always be performed with fins.
You will need to focus on dipping your "dead" side into the water, to get sufficient rotation for your stroking arm to comfortably recover over the water. You should feel like you are surging forward with every stroke, rather than feeling like you are moving up and down (in which case you may be pressing down on the water at the front, rather than pulling the water behind you).
This is a complicated drill for intermediate and advanced swimmers, which helps to fine tune the rhythm and timing of the freestyle stroke. Perform short sets of Unco immediately followed by freestyle (still wearing your fins) so you can transfer the rhythm of the drill straight into the rhythm of your freestyle stroke.