Use unique_ptr instead of shared_ptr.
Change define macro names.