break out some fns from extend-type
break out base-assign-impls from extend-type
move protocol-prefix out of extend-type