support for different widget types