algorithm userBased finish