factory
Internal Factory and all classes redefined