add Pattern Factory