Implement Factory.