add Factory class