I am given a list class that has a `Node` inner class. Here is the inner class:

```
class Node
{
public:
    /**
     * The constructor
     * @param data the data to be stored in this node
     */
    explicit Node( const Object& data )
      : data( data ), next( NULL ) {}

    Object data;
    Node * next;
};

```

We are told to write a `push_front` method that will push an element to the front of a list. I am having some trouble coming up with the correct way to do this. The `list` class has 3 private attributes: `uint size`, `Node * first`, and `Node * last`

The way I am thinking the `push_front` should work is this: if the list is currently empty (that is `size = 0`) then whatever object we are trying to push should become the last element on that list. Any other element we try to push will become the first and point to the next node.

```
void push_front( const Object& item )
{
    Node * new_node = new Node( item );

    if ( size == 0 )
    {
        new_node = last;
    }
    else
    {
        Node * temp = first;
        first->data = new_node;
        first->next = temp;
    }

```

I can't help but feel like this isn't the right way to do this. Can anyone point me in the right direction or suggest how I can do this the right way? Thanks.
 }