Rewrite by C++
Refactor
Refactor
Remove header