Added a abstract factory pattern.