template framword