Added factory method support