We probably need a better docstring if we are going to be returning so many things.