Separate complex projects into header files

Here are some Basic Guidelines.