Big tidy-up of deriving code