Implement Factory Method with ABC