Change the implementation factories to singleton