initialize factory