PCL with Abstract Factory for core types