serves as template