Split the data types, functions and global variables into five parts
The first version to pass all the test cases