big messy global type normalisation