Currently there are many repair steps that need to iterate over all the users to repair stuff.
The problem is that if an upgrade has for example 3 repair steps that all need to iterate over all users, they will iterate over all users 3 times. This is bad for bigger setups with 10000 users or so.
So the idea is to introduce a new category of repair steps IUserRepairStep that accepts a user as input. There would be a main loop that iterates over all users that then passes the user object to each of the user repair steps. This approach would only have a single iteration over all users but multiple processing.