已写好外部框架