采用 kstenerud 的模板创建通用framework