public void handle_action(Attributes meta) throws SAXException {
        String clazz = meta.getValue("class");
        String id = meta.getValue("id");
        String group = meta.getValue("group");
//todo: is it good to remove the action wich loaded twice, (2 of same action are working together)
        System.err.println("  Adding action " + clazz + " (" + id + "," + group + ") ...");

        Class<?> clazzz = null;
        try {
            clazzz = Class.forName(clazz);
        } catch (ClassNotFoundException e) {
            System.err.println("the given class name can't be loaded: " + clazz);
            ExceptionHandler.catchException(e);
            return;
        }
        boolean b = false;
        graphtea.platform.core.AbstractAction x = loadAbstractAction(clazz);

/**
 * handling extensions here
 * they are not AbstractAction, but their handlers should
 * return an AbstractAction(if it support the extension)
 * and after that the program know the
 * extension by that AbstractAction
 */
//        if (clazzz.isAssignableFrom(Extension.class)) {

//        for (ExtensionHandler s : ExtensionLoader.getRegisteredExtensionHandlers()) {
        if (x == null) {
            Object e = ExtensionLoader.loadExtension(clazzz);
//            SETTINGS.registerSetting(e,"Extention Options");     //Moved to Extension Loader
            if (e != null)
                x = ExtensionLoader.handleExtension(blackboard, e);
        }
//            x = s.handle(blackboard, clazzz);
//        b = b | x != null;
        if (x != null) {
            if (id == null) {
                id = x.getLastListenedEventKey();
                id = id.replaceFirst(UIEventData.name(""), "");
            }
            if (x instanceof UIActionExtensionAction) {
                UIActionExtensionAction action = (UIActionExtensionAction) x;
                action.setUIEvent(id);
            }
            addAction(id, x, group);
//            }
//        }
//        }
//        if (b) {
//            return;
        }
        if (x == null) {
            System.err.println("Error while loading " + clazz + ". skipped.");
            StaticUtils.addExceptiontoLog(new Throwable("Error while loading " + clazz + ". skipped."), blackboard);
            return; //error, skip it.
        }
        addAction(id, x, group);
    }