bringing in shared_ptr to our namespace also simplifies that typesystem.