Partly based on !2992 (closed).
This should be an incremental step towards disentangling these types.