What was the reason for changing these? I don't think this can change, it will break binary compatibility. Also, we should return the more specific type here, right?