modify to let specializer easier to use