[OPTIQ-327] Rules should use base class to find rule match & use factory for object creation