templates can be empty