It is part of the architecture to implement the factory-driven creation. It must have compilation-awareness