initial template based on zhangxin