Smart Pointer in action. Functionality stayed the same. BUT I USE SMART POINTERS FOR THE FIRST TIME!!! (In a real program)