Added forwarding with std::forward
rewrote UniquePtr creations using MakeUnique