Initial commit for factory method