implemented smfact