Urgh... too many changes to list in one commit