自己用的框架