Can't this just be a named tuple?