add factory classes