Strip foreign keys from version tables and don't use soft deletion everywhere.
Lookup table behaviour.
SelectionWidget: base widget class that can pull data from a lookup table.
Remove SoftDelete and apply LookupTable behaviour where appropriate.