Abstract Factory pattern version 0.0.1