Both of the major parties have been punished by voters in local council elections in the Midlands.
Labour have lost control of authorities in their former heartlands in Nottinghamshire, they've lost seats in Derby, and have failed to make inroads to targets in Stoke and Walsall.
The Conservatives have lost control of councils in Worcester, Peterborough and Hinckley & Bosworth.
The main winners in terms of votes and council seats were the Liberal Democrats, the Greens, UKIP and independent candidates.
These are the takeaway headlines:
- ASHFIELD - Former Labour heartland, now controlled by the Ashfield Independents after huge gains.
- BOLSOVER - Lost by Labour. Now No Overall Control after another good showing by independent candidates.
- WALSALL - Gained from No Overall Control by the Conservatives.
- HINCKLEY & BOSWORTH - Lost by the Conservatives to the Liberal Democrats.
- PETERBOROUGH - Lost by the Conservatives after gains by both Lib Dems and Greens.
- STOKE - Remains a coalition council after strong showing by independents.
There were more routine results in Wolverhampton, Sandwell, Nottingham and Coventry which were easily held by Labour, although Dudley is a dead heat with both main parties claiming 36 councillors each.
The Conservatives retained control of councils in North Warwickshire, Rugby and North West Leicestershire among others.
In the mayoral elections in the East Midlands, Labour's Andy Abrahams was elected for Mansfield by just two votes in the second round of voting.
In Leicester, Peter Soulsby retained his mayoral position.
Here are the results from the metropolitan, unitary and district councils in 2019:
- Coventry - LABOUR HOLD
- Dudley - CONSERVATIVE GAIN
- Sandwell - LABOUR HOLD
- Solihull - CONSERVATIVE HOLD
- Walsall - CONSERVATIVE GAIN
- Wolverhampton - LABOUR HOLD
- Herefordshire - NO OVERALL CONTROL
- Stoke - NO OVERALL CONTROL
- Telford and Wrekin - LABOUR HOLD
- Bromsgrove - CONSERVATIVE HOLD
- East Staffordshire - CONSERVATIVE HOLD
- Lichfield - CONSERVATIVE HOLD
- Malvern Hills - NO OVERALL CONTROL
- North Warwickshire - CONSERVATIVE HOLD
- South Staffordshire - CONSERVATIVE HOLD
- Stafford - CONSERVATIVE HOLD
- Staffordshire Moorlands - NO OVERALL CONTROL
- Stratford on Avon - CONSERVATIVE HOLD
- Warwick - NO OVERALL CONTROL
- Wychavon - CONSERVATIVE HOLD
- Wyre Forest - NO OVERALL CONTROL
- Cannock Chase - NO OVERALL CONTROL
- Redditch - CONSERVATIVE HOLD
- Rugby - CONSERVATIVE HOLD
- Tamworth - CONSERVATIVE HOLD
- Worcester - NO OVERALL CONTROL
- Nottingham - LABOUR HOLD
- Leicester - LABOUR HOLD
- Derby - NO OVERALL CONTROL
- Peterborough - NO OVERALL CONTROL
- Ashfield - INDEPENDENT GAIN
- Bassetlaw - LABOUR HOLD
- Broxtowe - NO OVERALL CONTROL
- Gedling - LABOUR HOLD
- Mansfield - INDEPENDENT HOLD
- Newark and Sherwood - CONSERVATIVE HOLD
- Rushcliffe - CONSERVATIVE HOLD
- Amber Valley - LABOUR GAIN
- Bolsover - NO OVERALL CONTROL
- Chesterfield -LABOUR HOLD
- Derbyshire Dales - CONSERVATIVE HOLD
- Erewash - CONSERVATIVE HOLD
- High Peak - LABOUR GAIN
- North East Derbyshire -CONSERVATIVE GAIN
- South Derbyshire - CONSERVATIVE HOLD
- Blaby - CONSERVATIVE HOLD
- Charnwood - CONSERVATIVE HOLD
- Harborough - CONSERVATIVE HOLD
- Hinckley and Bosworth - LIBERAL DEMOCRAT GAIN
- Melton - CONSERVATIVE HOLD
- North West Leicestershire - CONSERVATIVE HOLD
- Oadby and Wigston -LIBERAL DEMOCRAT HOLD
- Boston - CONSERVATIVE HOLD
- East Lindsey - CONSERVATIVE HOLD
- Lincoln - LABOUR HOLD
- North Kesteven - INDEPENDENT GAIN
- South Holland - CONSERVATIVE HOLD
- South Kesteven - CONSERVATIVE HOLD
- West Lindsey - CONSERVATIVE HOLD