增加了分离的模板实现