Added a data type and messed about with the `derive*` extensions.