Add Utility.
add pimpl idiom.
memo:Makefile should be shared ?