Widget with different templates

Widget templateName can be observable:
Widget templateName can be set from inside widget itself, but this case it can not be an observable.