reorganize source codes