use less template to do more things