add factory and add composer.json