Made user interface easier to use. (why does the client have to create shared pointers?)