split APIs to several files. fixed #1