add singleton and simple_factory