Use unique pointers instead of raw