implement specializer