First commit for factory pattern