Adding DelegateFactory
Adding GenericFactory