Added factory patturn