template switch