refactor using alternate factory