refactor extended types to have a single definition location