introduce static factory method