public InputElement makeInput(WebNode node) {
        //TODO how to keep consistent with isInput method? Use reflection?
        if (SubmitButton.isSubmit(node))
            return new SubmitButton(node);
        if (Button.isButton(node))
            return new Button(node);
        if (Textarea.isTextarea(node))
            return new Textarea(node);
        if (Text.isText(node))
            return new Text(node);
        if (Checkbox.isCheckbox(node))
            return new Checkbox(node);
        if (Radio.isRadio(node))
            return new Radio(node);
        if (Password.isPassword(node))
            return new Password(node);
        if (Select.isSelect(node))
            return new Select(node);
        //TODO postprocessing of radio buttons?

        if (isInput(node))
            throw new InconsistencyException("InputElementFactory.makeInput", "InputElementFactory.isInput", node.toString());
        else
            throw new NotSupportedException("InputEleemntFactory.makeInput", node.toString());
    }