public List getChangedComponents() {
        ArrayList components = YUIToolkit.getViewComponents(controller.getView());
        Iterator it = components.iterator();
        ArrayList result = new ArrayList();
        while (it.hasNext()) {
            Object comp = it.next();
            boolean changes = false;
            if (comp instanceof YIModelComponent) {
                YIModelComponent modelComp = (YIModelComponent) comp;
                if (hasChanges(modelComp)) {
                    logger.debug("changes in "  + modelComp.getYProperty().get(YIComponent.MVC_NAME)); 
                    result.add(modelComp);
                    changes = true;
                }
            }
            if (!changes) {
                // investigating extended field...
                if (comp instanceof YIExtendedModelComponent) {
                    YIExtendedModelComponent extComp = (YIExtendedModelComponent) comp;
                    if (hasChanges(extComp)) {
                        result.add(extComp);
                        logger.debug("extended changes in "  + extComp.getYProperty().get(YIComponent.MVC_NAME)); 
                    }
                }
            }
        }
        return result;
   }