naming convetion fixed - IControl => IControlFactory