reimplemented so that Factories are a singleton