add template interface