unique pointerify everything to manage memory :)