Add header file and partial implementation.

Due to cold weather, codes will be add tomorrow.
But gf will be here tomorrow, codes may be add
tomorrow after tomorrow.