Separated multiple source files.

Signed-off-by: Kouhei Maeda <mkouhei@palmtb.net>