Separate classes into different files.

@flyerhzm I have moved those class into a new directory but did not change the namespace. Is it better to set these directories in plural? Please review.