Replace normal pointers to smart pointer(std::shared_ptr)
README.md update and clean up