template methods