User input implemented. shared_ptr implemented.