optimize tempalte extends function